RewriteRule и знак числа «#» - PullRequest
6 голосов
/ 20 мая 2011

Я пытаюсь создать дружественный URL через RewriteRule, но он продолжает игнорировать # как часть значения переменной.
Строка на .htaccess так же проста, как эта

RewriteRule ^key/(.+)/$ index.php?key=$1  

и запрашиваемый URL-адрес

http://www.example.com/key/c%23/  

но я получаю c как переменную get, а не c%23.

Что именно я делаю не так?

Ответы [ 3 ]

4 голосов
/ 22 мая 2011

Наконец, после некоторых копаний, мне удалось это осуществить.

Ему просто нужен флаг B на RewriteRule для экранирования не алфавитно-цифровых символов, таких как #

RewriteRule ^key/(.+)/$ index.php?key=$1 [B]
0 голосов
/ 21 мая 2011

%23 - хеш-знак (#). Я предполагаю, что браузер интерпретирует хеш как якорь и не передает его на сервер. Например, если вы используете http://www.foo.com/key/c%20/, вы получите "c [пробел]".

0 голосов
/ 21 мая 2011

%23 является хеш-символом (#), поэтому он (и все, что после него) фактически не анализируется mod_rewrite.Таким образом, фактический URL-адрес - http://www.foo.com/key/c, без %23.Другие штрих-коды работают нормально.

...