RewriteRule忽略url变量

时间:2009-12-15 06:59:22

标签: apache mod-rewrite

我有一些由Google编制索引的网页,例如:

/product.html?affiliateid=142

如果有affiliateid=xxx

,我希望重写规则301重定向到同一页面

到目前为止,我有这个:

RewriteCond %{QUERY_STRING}  ^affiliateid=[0-9]+$
RewriteRule ^$ /test.html$ [L,R=301]

但它不起作用,我需要摆脱变量并以某种方式获取页面名称。

2 个答案:

答案 0 :(得分:0)

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

RewriteCond %{QUERY_STRING} ^affiliateid=[0-9]+$
RewriteRule ^ %{REQUEST_URI}? [L,R=301]

如果您想保留任何其他查询参数,请尝试以下方法:

RewriteCond %{QUERY_STRING} ^(([^&]*&)*)affiliateid=[0-9]+(&+(.*))?$
RewriteRule ^ %{REQUEST_URI}?%1%4 [L,R=301]

答案 1 :(得分:0)

找到它:

RewriteCond%{QUERY_STRING} ^ affiliateid =([0-9] +)$

RewriteRule ^(。*)$ / $ 1? [L,NC,R = 301]

这是问号/ $ 1?告诉规则在查询字符串

结束重写