0

我遇到的问题是查询字符串通过重定向持续存在。即,每当我尝试重定向类型的 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 的新手。)

4

2 回答 2

1

如果你附加一个 ? 到您的目标 URL,查询字符串将从重定向中删除:

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301]
于 2012-06-11T11:08:33.540 回答
0

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

例如: /register -> --即使原始 URL 是;/login.php?action=register结果也始终是; 但是对于->查询字符串总是会被复制过来,所以会变成./login.php?action=register/register?say=bla-bla/register/login.php/register?say=bla-bla/login.php?say=bla-bla

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

怎么做?只需?在新 URL 的末尾添加:

RewriteRule ^oldsite/product/productname.aspx http://subdomain.newsite.com/product? [L,R=301]
于 2012-06-11T11:13:45.193 回答