PHP从用htaccess修改的url中获取变量


PHP get variable from url modified with htaccess

我有这个网址:

example.com/en/hk/myAccount?Ref=CC0000008

我的.htaccess看起来是这样的:

Options +SymLinksIfOwnerMatch
RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^(chin|en)/(hk|kw)/myAccount/?$    user_account.php?lang=$1&loc=$2& [NC,L] #SHOW USER ACCOUNT

所以我现在想得到在url上传递的变量ref,但当我print_r变量$_GET时,我只得到.htaccess文件中的变量。

我该怎么办?

您需要添加QSA标志

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^(chin|en)/(hk|kw)/myAccount/?$ user_account.php?lang=$1&loc=$2 [QSA,NC,L]

输出:

Array ( [lang] => en [loc] => hk [Ref] => CC0000008 )

标志QSA意味着,如果有一个查询字符串与原始URL一起传递,则将其附加

标志L表示,如果规则匹配,则不再处理低于此规则的任何规则。

标志NC表示不区分大小写,也就是说,它不在乎字母在匹配的URI中是以大写还是小写出现。

Apache重写规则标志