.htaccess参数的差异

时间:2015-01-19 11:03:08

标签: php .htaccess get difference

我有以下.htaccess:

Options FollowSymlinks

RewriteEngine on

RewriteRule ^test/(.*)$ index.php?test=$1 [B,NE,QSA]

然后我有以下index.php:

print_r($_GET);

http://localhost/test/directeur+R%26D?test2=directeur+R%26D的结果是:

 Array ( [test] => directeur+R&D [test2] => directeur R&D )

为什么test和test2有所不同?我希望他们有相同的价值。

2 个答案:

答案 0 :(得分:0)

B标记就位+将不会转换为URI中的空格。您需要一个额外的规则才能将+首先转换为空格。

RewriteEngine On
RewriteBase /

# convert + to space in URI
RewriteRule ^([^+]+)\+(.*)$ "$1 $2" [L]

# now your original rule
RewriteRule ^test/(.*)$ index.php?test=$1 [B,L,QSA]

现在,您的测试网址会为您提供此$_GET数组:

Array
(
    [test] => directeur R&D
    [test2] => directeur R&D
)

答案 1 :(得分:0)

最佳解决方案是使用$ _SERVER [“REQUEST_URI”]重建$ _GET变量。