2013-01-01 185 views
2

我確實需要一些幫助將髒網址重定向到乾淨網址。301將髒網址重定向到乾淨的網址

骯髒的網址:creature.php獸=

清潔網址:/神話,生物/

目前我的.htaccess看起來是這樣的:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^mythicalcreatureslist.com [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^www.mythbeasts.com [NC] 
RewriteRule ^(.*)$ http://www.mythicalcreatureslist.com/$1 [L,R=301] 

RewriteRule ^menu/([A-Za-z0-9-+]+)/?$ menu.php?menu=$1 [NC,L] 
RewriteRule ^menu_two/([A-Za-z0-9-+]+)/?$ menu_two.php?menu=$1 [NC,L] 

RewriteRule ^mythical-creature/([A-Za-z0-9-+\'%]+)/?$ creature.php?beast=$1 [NC,L] 

這樣做是它使該網站在瀏覽時顯示乾淨的網址,這非常棒。但是舊的髒URL在URL欄中輸入時不會重定向。

例如:蒙古死亡之蟲 http://www.mythicalcreatureslist.com/creature.php?beast=Mongolian+Death+Worm

我希望它重定向到: http://www.mythicalcreatureslist.com/mythical-creature/Mongolian+Death+Worm

這是造成重複的內容。我曾嘗試過:

RewriteRule ^/mythical-creature/([A-Za-z0-9-+\'%]+)/?$ http://www.mythicalcreatureslist.com/creature.php?beast=$1 [R=301,NC,L] 

但是這樣做是爲了讓骯髒的一直被使用。

然後我把它彈輪:

RewriteRule ^creature.php?beast=([A-Za-z0-9-+\'%]+)/?$ http://www.mythicalcreatureslist.com/mythical-creature/$1 [R=301,NC,L] 

但是,這只是造成404瀏覽的同時,仍然在地址欄中鍵入時沒有重定向舊的髒網址。

回答

1

正則表達式不匹配空的查詢參數值。翻轉+到*

RewriteRule ^/creature.php?beast=([A-Za-z0-9-+\'%]*)/?$ http:// www.mythicalcreatureslist.com/mythical-creature/$1 [R=301,NC,L] 

注意添加斜線也

+0

感謝凱爾的,但不幸的是這並沒有作出了區別。它在瀏覽時仍會導致404錯誤,並且在地址欄中輸入時不會重定向舊的髒網址。 – Egan7

+0

@ Egan7是這個網址直接訪問:http://www.mythicalcreatureslist.com/mythical-creature/蒙古+死亡+蠕蟲 – Kyle

+0

你在404上看到什麼網址? – Kyle