301将脏URL重定向到清洁

时间:2013-01-01 11:30:02

标签: redirect clean-urls

我真的需要一些帮助将脏URL重定向到干净的URL。

脏网址:creature.php?beast =

清洁网址:/ mythical-creature /

目前我的.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,并且在地址栏中键入时仍然没有重定向旧的脏URL。

1 个答案:

答案 0 :(得分:1)

正则表达式与空查询参数值不匹配。将+翻到* *

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

注意还添加了一个前导斜杠