mod_rewrite后忽略查询字符串

时间:2013-05-02 18:32:01

标签: php apache mod-rewrite query-string

我在.htaccess文件中使用以下重写规则将所有请求发送到位于根目录的index.php文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?q=$1 [L]

正如我所料,像 example.com/users 这样的网址会导致php收到["q"]=> string(5) "users"作为$ _GET变量。

另一方面 example.com/users?fu=bar 等网址不会导致php接收

["q"]=> string(5) "users", 
["fu"]=> string(3) "bar"

这里发生了什么,以及如何修改我的规则以表现这种方式?

1 个答案:

答案 0 :(得分:3)

您需要添加原始查询字符串:

RewriteRule (.*) index.php?q=$1 [L,QSA]
                                   ^^^ here