1

我想在不查看查询字符串的情况下进行重定向,并且我的重定向结果也不需要附加查询字符串,因此我?在 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

谢谢!

4

1 回答 1

3

?如果目标中已有查询字符串,则无需在末尾附加 a 。只需这样做:

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

但是,如果您?的目标中有 a ,除非您有 ,否则不会附加查询字符串QSA,因此:

RewriteRule ^foo1$ /bar? [L]
RewriteRule ^foo2$ /bar?q=2 [L]

你要求/foo1?blah,你得到/bar,你要求/foo2?blah,你得到/bar?q=2。如果您QSA在重写标志中包含 a ,则&blah附加到末尾。

于 2012-09-26T02:01:20.427 回答