2010-11-21 2 views
0

Я пытаюсь сопоставить значение в cookie. Проблема в том, что Apache делает значение url-encoded. Так что, если я это сделать:mod_rewrite: Почему apache URL-encode% {HTTP_COOKIE}?

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

Он захватит это:

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

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

session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2 

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

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

Помогите! Я искал всюду в Google и stackoverflow, и никто не рассматривал эту проблему. Огромное спасибо.

ответ

0

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

Отделите свои значения подкипящего файла, используя символ, который НЕ будет кодироваться URL. Я использовал символ тире «-». например "VAL1 - VAL2".

Удачи вам!

0

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

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

RewriteRule ^/якорь /(.+) /bigpage.html#$1 [Н.Е., R]

В приведенном выше примере будет перенаправлять/якорь/хуг к /bigpage.html#xyz. Опускание [NE] приведет к тому, что # будет преобразован в его эквивалент в шестнадцатеричном формате,% 23, что приведет к ошибке 404 Not Found.

http://httpd.apache.org/docs/2.3/rewrite/flags.html