Mod_rewrite处理额外的get变量(QSA无效)

时间:2016-10-06 19:10:49

标签: php apache .htaccess mod-rewrite

我对设置页面有一个mod重写规则:(localhost / settings / index.php)

RewriteRule settings/([a-zA-Z0-9_]+)/?$ settings/?path=$1 [QSA,L]

我正在处理URL中的菜单引用,类似于:

http://localhost/settings/xyz/?ref=menu1&abc=2&de=3..

然而,根据我目前的重写规则,变量不会被传递,我没有得到ref,abc的值..

我阅读here关于QSA标志,但这似乎没有用。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试关闭MultiViews选项:

Options -MultiViews
RewriteEngine On

RewriteRule ^settings/([\w-]+)/?$ settings/?path=$1 [QSA,L,NC]

代替QSA,您可以使用此技巧捕获查询字符串:

RewriteRule ^settings/([\w-]+)/?$ settings/?path=$1&%{QUERY_STRING} [L,NC]