我想在不查看查询字符串的情况下重定向,并且我的重定向结果也不需要附加查询字符串,所以我在RewriteRule的末尾添加了?
。
我尝试了以下语法,但结果恰好接近它。
RewriteCond %{QUERY_STRING} .* [NC]
RewriteRule ^exd\.asp$ http://www.example.com/index.php?r=p/consumer? [R=301,L]
而且,我试图逃避我需要它的第一个?
,但仍然是相同的结果。
RewriteRule ^exd\.asp$ http://www.example.com/index.php\?r=p/consumer? [R=301,L]
结果:
http://www.example.com/index.php?r=p/consumer%3f
我想搭乘%3f
。
谢谢!
答案 0 :(得分:3)
如果您的目标中已有查询字符串,则无需在末尾附加?
。就这样做:
RewriteCond %{QUERY_STRING} .* [NC]
RewriteRule ^exd\.asp$ http://www.example.com/index.php?r=p/consumer [R=301,L]
默认情况下,会追加查询字符串,如下所示:
RewriteRule ^foo$ /bar [L]
您请求/foo?blah
,然后获得/bar?blah
但是,如果目标中有?
,则除非您拥有QSA
,否则不会追加查询字符串,因此:
RewriteRule ^foo1$ /bar? [L]
RewriteRule ^foo2$ /bar?q=2 [L]
您请求/foo1?blah
,然后获得/bar
,请求/foo2?blah
并获得/bar?q=2
。如果在重写标记中包含QSA
,则&blah
会附加到结尾。