Подтвердить что ты не робот

Правило перезаписи htaccess с экранированным амперсандом в $_GET не выполняется

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

Начальная ссылка:

<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] => )
4b9b3361

Ответ 1

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

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

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

Найдено несколько ссылок: