Apache Mod_Rewrite查询字符串到标准URL

时间:2010-03-07 18:07:42

标签: apache mod-rewrite

我正在使用.htaccess重定向301来重定向一个网址,然后将所有查询字符串元素添加到结尾,留下一些在Google中编入索引的网址为/store/product/?d=department&s=section&p=product

我已经使用RewriteRule修改了重定向,而不是附加查询字符串,但是我试图用查询字符串重写旧的重定向网址回到原始网址(因为这些现在看起来像谷歌的两个不同的网址。)

我设法获得了RewriteRule的工作,/store/product/xxxxx重定向到/store/product/,它似乎不适用于整个查询字符串的。

我一直在使用的是:

RewriteRule ^store/product/([a-zA-Z0-9\-_\?=&]+)$ http://www.example.com/store/product/ [NC,R=301,L]

RewriteRule ^store/product/\?d=department&s=section&p=product$ http://www.example.com/store/product/ [NC,R=301,L]

希望一切都有意义!

非常感谢

2 个答案:

答案 0 :(得分:1)

RewriteCond %{QUERY_STRING} !^$
RewriteRule ^store/product/.*$ http://www.example.com/store/product/? [NC,R=301,L]

答案 1 :(得分:0)

您需要在替换中指定一个空查询,以使原始查询不会自动附加到新网址:

RewriteRule ^store/product/[a-zA-Z0-9\-_=&]+$ http://www.example.com/store/product/? [NC,R=301,L]

请注意替换网址末尾的?