301重写规则不起作用

时间:2017-02-02 15:23:04

标签: apache .htaccess redirect mod-rewrite

我们想重定向下面提到的网址。

来自网址:

www.example.com/itemLevelFilterPage.action?keyWordTxt=&srchTyp=CATNAV&attrFilterList=attr_brand%3A%223M%22&resultPage=0

到网址:www.example.com/4G

我们在apache配置中写了301条规则如下。

RewriteEngine on  
RewriteRule ^/itemLevelFilterPage.action?keyWordTxt=&srchTyp=CATNAV&attrFilterList=attr_brand%3A%223M%22&resultPage=0  /4G   [L,R=301]

但是重定向没有按预期工作。任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

mod_rewrite will not look at query strings作为匹配的一部分,除非您明确要求:

RewriteCond %{REQUEST_URI}  ^/itemLevelFilterPage\.action$
RewriteCond %{QUERY_STRING} ^keyWordTxt=&srchTyp=CATNAV&attrFilterList=attr_brand%3A%223M%22&resultPage=0$
RewriteRule (.*)            http://www.example.com/4G?  [R=301,L]

第一个条件确保我们查看正确的页面,第二个条件检查查询字符串,规则会将URL重写为所需的页面。

规则上的尾随问号可确保删除旧的查询字符串。如果您使用的是Apache 2.4,则可以使用查询字符串discard标志:

RewriteRule (.*)            http://www.example.com/4G  [R=301,L,QSD]

更多examples here