我有以下.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有所不同?我希望他们有相同的价值。
答案 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变量。