在htaccess(mod_rewrite)中传递的持久查询字符串

时间:2012-06-11 10:23:25

标签: .htaccess mod-rewrite seo

我遇到的问题是通过重定向持续存在的查询字符串。即,每当我尝试重定向类型为

的URL时
RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product [L,R=301]

这完美无缺 - 没有问题。

但是,当我尝试使用查询字符串时,例如:

RewriteRule ^oldsite/product/productname.aspx?=QUERYSTRING http://subdomain.newsite.com/product [L,R=301]

重定向有效,但当我用标题检查器检查时,我最终得到以下结果:

http://subdomain.newsite.com/product?=QUERYSTRING

即。 - 它从旧URL传递查询字符串,我不希望它。

我检查了一堆资源,但似乎无法找到一个简单的解决方案。在方形参数括号中是否有标记? (对不起,如果我使用了错误的术语,mod_rewrite的新内容。)

2 个答案:

答案 0 :(得分:1)

如果你追加?对于您的目标URL,查询字符串将从重定向中删除:

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301]

答案 1 :(得分:0)

是的,只要您没有对其进行任何修改(例如,新网址没有查询字符串),查询字符串就会自动复制到新网址,即使是重定向也是如此。

例如: /register - > /login.php?action=register - 即使原始网址为/login.php?action=register,结果始终为/register?say=bla-bla; {strong>但代表/register - > /login.php始终会复制查询字符串,因此/register?say=bla-bla将成为/login.php?say=bla-bla

那么,需要做什么?您需要提供一些查询字符串 - 在您的情况下,查询字符串应为空。

怎么做?只需在新网址末尾添加?

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301]