2017-10-06 55 views
-3

我怎麼能改寫這樣的URL:URL重定向URL與查詢字符串,並將其用於回聲(URL路由?)

example.com/page.php?link=Anythingelse to example.com/Anythingelse and using 


<h1><?php echo $link; ?></h1> 

這與內容PHP:

輸出示例:網站-Title:Anythingelse - 網站標題和標題1 Anythingelse

第一個想法是:

RewriteEngine On 
# Redirect e.g. /page.php?link=value to /value if direct acccess 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{QUERY_STRING} ^link=([^&]+)$ 
RewriteRule ^/?page\.php$ /%1 [R=301,QSD,NE,L] 
# Internal rewrite to from /value to /page.php?link=value 
RewriteCond %{REQUEST_URI} !^/?page\.php$ 
RewriteRule ^/?([^/]+)$ /page.php?link=$1 [QSA,NE,L] 

但它會導致500內部服務器錯誤。我的提供程序不支持Apache錯誤日誌。我能做什麼?使用PHP進行URL路由?

+0

你[看着它(https://www.addedbytes.com/blog/url-rewriting-for-beginners)? – Wndrr

+0

關於URL重寫有很多問題,教程,指南等。請先做一些研究並嘗試。 –

+0

的[URL與PHP重寫]可能的複製(https://stackoverflow.com/questions/16388959/url-rewriting-with-php) – Neodan

回答

1

我以爲我知道你想要什麼。

來自瀏覽器的請求,應該是這樣的:

http://example.com/Example%20in%20Example 

%20是由服務器(沒有變化重寫一個空格字符

這個請求應該是內部的URL編碼版本瀏覽器)至

http://example.com/page.php?link=Example%20in%20Example 

要做到這一點,重寫將以下內容放入你的hta CCESS文件:

RewriteEngine On 
# Redirect e.g. /page.php?link=value to /value if direct acccess 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{QUERY_STRING} ^link=([^&]+)$ 
RewriteRule ^/?page\.php$ /%1 [R=301,QSD,NE,L] 
# Internal rewrite to from /value to /page.php?link=value 
RewriteCond %{REQUEST_URI} !^/?page\.php$ 
RewriteRule ^/?([^/]+)$ /page.php?link=$1 [QSA,NE,L] 

現在您的page.php文件文件要使用這個值Example%20in%20Example

<?php 
    $link = (isset($_GET['link'])) ? htmlspecialchars(urldecode($_GET['link'])) : ''; 
?> 
<h1><?php echo $link; ?></h1>` 

urldecode()將解碼所有的URL編碼的字符,例如%20成爲空間:
http://php.net/manual/en/function.urldecode.php

htmlspecialchars()保護你,如果HTML字符是在您的網址使用,例如<>
http://php.net/manual/en/function.htmlspecialchars.php

您需要啓用mod_rewrite的Apache的,你需要的權限來使用覆蓋與htaccess的文件。

+0

您好,很特別感謝的回答。但現在通過展示http://example.com/page.php?link=Example%20in%20Example – Royalts

+0

自帶一個500內部服務器錯誤忘記一條線,現在它應該工作。 – Webdesigner

+0

hmpf不工作,url沒有任何變化,但index.php也改變了頁面的標題。php(現在有

index.php

。 – Royalts

相關問題