2012-09-26 149 views
1

我想不看的查询字符串重定向重定向,和我的重定向导致没有必要追加查询字符串一样,所以我在重写规则的末尾添加?的.htaccess与忽略查询字符串

我尝试下面的语法,但结果只是接近它。

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的车程。

谢谢!

回答

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会被追加到最后。

+0

喜林乔恩,我真的试图不把?最后,我仍然得到了http://www.example.com/index.php?r=p/consumer%3f的结果,它在RewriteCond中是否有错? – Shiro

+0

@Shiro除非有另一个规则,否则您的浏览器缓存需要清除,否则'%3f'不会在最后卡住。 –

+0

是的,你是对的,它是缓存....谢谢! – Shiro