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