mod_rewrite: почему apache URL-кодирует% {HTTP_COOKIE}? - PullRequest
0 голосов
/ 21 ноября 2010

Я пытаюсь сопоставить значение в файле cookie. Проблема в том, что Apache делает значение в кодировке url. Итак, если я сделаю это:

RewriteCond %{HTTP_COOKIE} ^(.+)$ [NC]

Это захватит это:

session%3DeXnR1oDL1Reb8Z3Gdgk7Sg%26account%3D2%3B

вместо этого:

session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2

Так что нет способа получить номер счета для этого:

RewriteRule ^$ /accounts/%1/ [R=301,L]

Пожалуйста, помогите! Я посмотрел повсюду в Google и stackoverflow, и никто не обращался к этой проблеме. Большое вам спасибо.

Ответы [ 2 ]

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

Вы пытались использовать флаг -> NE | noescape?

По умолчанию специальные символы, такие как & и?, Например, будут преобразованы в эквивалент в шестнадцатеричном формате. Использование флага [NE] предотвращает это.

RewriteRule ^ / anchor /(.+) /bigpage.html#$1 [NE, R]

Приведенный выше пример перенаправит / anchor / xyz в /bigpage.html#xyz. Пропуск [NE] приведет к преобразованию # в его эквивалент в гексоде,% 23, что приведет к ошибке 404 Not Found.

Источник: http://httpd.apache.org/docs/2.3/rewrite/flags.html

0 голосов
/ 22 ноября 2010

Я так и не нашел ответ - НО, я нашел обходной путь. Для тех, у кого такая же проблема, вот она:

Разделите значения вложенных файлов cookie, используя символ, который НЕ будет закодирован в URL. Я использовал тире "-". например "VAL1 - VAL2"

.

Удачи!

...