我有一个这样的.htaccess重写规则:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q=


这是做什么的,如果有人访问http://example.com/search/test,则真正处理的URI是http://www.example.com/search.php?q=test

现在,如果我尝试将一个额外的随机GET参数传递到重写的URL,则该参数将被忽略。因此,如果我尝试访问这里:

http://www.example.com/search/whatever?extra=true

参数extra被忽略。它似乎根本没有通过。

可以解决此问题吗?如果可以,怎么办?

#1 楼

您正在寻找Q uery S tring A ppend标志-例如

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ search.php?q= [QSA]


有关RewriteRule标志的完整说明,请参见mod_rewrite文档。

评论


很好!我知道有这样的事情。我是.htaccess新手。

–杰克·威尔逊(Jake Wilson)
2011年12月9日在22:09

有没有办法将QSA添加到所有规则

– hakkikonu
2014年9月23日下午7:57

嗨@danlefree知道这是一个老问题,但是使用Wamp时,我这样做的所有样式表,脚本等都失去了参考。我该如何解决?

– Danny22
2015年11月4日在16:43