重写规则返回空的$ _GET参数

时间:2013-09-04 19:29:10

标签: regex apache .htaccess mod-rewrite

继续this question被解答,

我在.htaccess文件中使用此规则:

# Internally forward /map/abc to /location.php?address=abc
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^map/(.*)/?$ /location.php?address=$1 [NC,L]

继续,在页面加载后的某个时刻,用户执行facebook登录,重定向回原始页面但添加了身份验证码:

 map/פבריגט/חולון/ישראל?code=Facebook_Auth

问题是"代码"参数未通过。

我尝试在上面提到的第一条规则之前添加此规则:

#first rule to Internally forward /map to /location.php?address=abc&code=yxz and get code
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^map/(.*)/?(.*)$ /location.php?address=$1&code=$2 [NC,L]

但是对于这个网址:

/map/פבריגט/חולון/ישראל?code=abc

$ _GET数组输出

'address' => string UTF-8 (18) "פבריגט/חולון/ישראל"
'code' => string (0) ""

我应该使用什么规则拦截"代码"参数? 欢迎任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:3)

您的QSA中需要额外的RewriteRule标记(查询字符串追加)。

RewriteRule ^map/(.*?)/?$ /location.php?address=$1 [NC,L,QSA]