Правило перезаписи 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] => )
Ответы
Ответ 1
А, ладно. Интересно. Кажется, существует специальное решение для сохранения того, что амперсанд особенно ускользнул. Используйте флаг [B]
для Rewriterules.
RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B]
Предполагается присвоить специальные символы urlencode при интерполяции заполнитель $1
. Он работает только с Apache 2.2, но я верю.
Найдено несколько ссылок: