如何将GET参数传递给重写的URL?


13

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

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

它的作用是,如果有人访问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被忽略。它似乎根本没有通过。

这个问题可以解决吗?如果是这样,怎么办?

Answers:


14

您正在寻找Query S特林APPEND标志-例如,

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

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


很好!我知道有这样的事情。我是.htaccess菜鸟
杰克·威尔逊

有没有一种方法可以将QSA添加到所有规则中
hakkikonu 2014年

嗨@danlefree知道这是一个老问题,但是使用Wamp时,我这样做的所有样式表,脚本等都失去了参考。我该如何解决?
DannyGM 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.