RewriteRule 301问题原始网址包含? (问号)

时间:2014-02-17 07:40:31

标签: .htaccess mod-rewrite redirect

我正在更换现有网站,因此域名不会发生变化。我确实想使用301重定向,以便机器人和搜索引擎能够识别新页面。我尝试过以下但是没有用。

原始网址: http://example.com/index.php?SiteAction=Directions

新网址: http://example.com/map/

RewriteEngine On
RewriteBase /

#301 redirects using RewriteRule
RewriteRule ^index.php?SiteAction=Directions$ http://example.com/map/ [R=301,L]

index.php之后的问号似乎完全破坏了我的网站,所以我也尝试过这样写,但是没有任何反应:

RewriteRule ^index.php(.)SiteAction=Directions$ http://example.com/map/ [R=301,L]

我正在使用Dreamhost PS,如果这有任何区别的话。

1 个答案:

答案 0 :(得分:0)

您无法在RewriteRule中匹配QUERY_STRING,您需要RewriteCond %{QUERY_STRING}

请改用此规则:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^SiteAction=Directions$ [NC]
#301 redirects using RewriteRule
RewriteRule ^index\.php$ http://example.com/map/? [R=301,L,NC]