2013-01-23 179 views
0

我怎樣才能獲得Apache將自動重定向的URL,例如:重定向的URL與Apache

mydomain.com/webpage.php?name=about_me mydomain.com/webpage.php?name=contact 等

到:

mydomain.com/about_me mydomain.com/contact

此外,mydomain.com/webpage.php?name=home_page應該重定向到簡單:mydomain.com/

現在,我有我的.htaccess文件:

RewriteEngine敘述在 重寫規則^ $ webpage.php名= home_page [L] 重寫規則/ $ webpage.php名= $ 1嗎?(*)? [L]

但RewriteRule不會自動重定向我的訪問者,它只是讓他們使用短或長的URL。換句話說,我想強制這個簡短的URL。

回答

0

試試這個:

RewriteEngine On 
RewriteRule ^webpage.php?name=(.*)$ /$1 [R=301,L] 
RewriteRule ^$ webpage.php?name=home_page [L] 
RewriteRule (.*)/$ webpage.php?name=$1 [L] 
+0

Linuxios,我試過你的建議,但它不會自動帶我到短網址。 –

+0

@ gts-joe:你試過什麼URL? – n1xx1

0

只是爲了驗證。你想讓apache像這樣工作:

訪問者轉到「mydomain.com/about_me」,並顯示「mydomain.com/webpage.php?name=about_me」。 訪客轉到「mydomain.com/contact」,並顯示「mydomain.com/webpage.php?name=contact」。

如果你想擁有這個。如果你想「mydomain.com/webpage.php?name=about_me」自動重定向到「mydomain.com/about_me」

RewriteEngine On 
RewriteRule ^(.*)$ webpage.php?name=$1 [L] 

:你應該試試這個。您應該在webpage.php文件中添加額外的檢查。檢查應評估URI以查看是否使用了「webpage.php」,如果是,則應使用「標題」功能重定向到短網址。所以這裏是代碼:

$page="webpage.php"; 

if(substr($_SERVER["REQUEST_URI"],0,strlen($page)) == $page) { 
    $location = "Location: http://".$_SERVER["SERVER_NAME"]."/".$_GET["name"]; 
    header($location); 
} 
// whatever webpage.php does. 
+0

leeroyc,這就是我目前所擁有的。但是,如果用戶首先轉到mydomain.com/webpage.php?name=about_me,那麼Web瀏覽器的地址欄是否有方法顯示mydomain.com/about_me/?即使用戶輸入較長的網址,我也要強制使用短網址。 –