У меня есть следующий .htaccess:
Options FollowSymlinks
RewriteEngine on
RewriteRule ^test/(.*)$ index.php?test=$1 [B,NE,QSA]
Тогда у меня есть следующий index.php:
print_r($_GET);
Результат HTTP: // локальный / тест / Directeur + R% 26D test2 = Directeur + R% 26D? является :
Array ( [test] => directeur+R&D [test2] => directeur R&D )
Почему test и test2 отличаются, пожалуйста? Я хотел бы, чтобы они имели одинаковую ценность.
С 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]
Теперь ваш тестовый URL даст вам это $_GET
массив:
Array
(
[test] => directeur R&D
[test2] => directeur R&D
)
Лучшим решением было перестроить переменную $ _GET с помощью $ _SERVER [«REQUEST_URI»].