.htaccess重定向,忽略查询字符串

时间:2012-09-26 01:53:24

标签: .htaccess mod-rewrite

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

谢谢!

1 个答案:

答案 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会附加到结尾。

相关问题