Правило перезаписи htaccess с экранированным амперсандом в $ _GET завершается ошибкой - PullRequest
12 голосов
/ 12 декабря 2011

Я столкнулся с проблемой с параметром get в сочетании с правилом перезаписи htaccess.Ниже ссылка urlencode () ';правило перезаписи, которое я использую для перенаправления в index.php, и, наконец, print_r ($ _ GET) для index.php.Как вы можете видеть, амперсанд urlescaped не является частью значения переменной static, но вместо этого, вопреки моим ожиданиям, интерпретируется как разделитель переменных. Почему?

Исходная ссылка:

<a href="static/Game-Tech-%26-Arts-Lab">link</a>

.htaccess:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L]

index.php:

Array ( [static] => Game-Tech- [-Arts-Lab] => )

1 Ответ

23 голосов
/ 12 декабря 2011

Ах, хорошо.Интересно.Кажется, есть специальное решение для того, чтобы этот амперсанд был специально экранирован.Используйте флаг [B] для перезаписей .

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B]

. Предполагается, что он будет кодировать специальные символы при интерполяции заполнителя $1.Это работает только с Apache 2.2, однако я верю.

Нашел несколько ссылок:

...