2010-11-21 22 views
0

J'essaie de faire correspondre une valeur dans un cookie. Le problème est, Apache rend la valeur codée en URL. Donc, si je fais ceci:mod_rewrite: Pourquoi apache URL-encoder% {HTTP_COOKIE}?

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

Il captera ceci:

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

au lieu de ceci:

session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2 

donc il n'y a pas moyen d'obtenir le numéro de compte pour ce faire :

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

Aidez-nous! J'ai regardé partout sur Google et stackoverflow et personne n'a résolu ce problème. Merci beaucoup.

Répondre

0

Je n'ai jamais trouvé la réponse - MAIS, j'ai trouvé une solution de rechange. Pour ceux qui ont le même problème, le voici:

Séparez les valeurs de vos sous-cookies en utilisant un caractère qui n'obtiendra pas d'URL codée. J'ai utilisé le tiret "-". par exemple. "VAL1 - VAL2".

Bonne chance!

0

Avez-vous essayé d'utiliser flag -> NE | noescape?

Par défaut, les caractères spéciaux, tels que & et?, Par exemple, seront convertis en leur équivalent hexcode. L'utilisation du drapeau [NE] empêche cela.

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

L'exemple ci-dessus redirigera/ancre/xyz à /bigpage.html#xyz. Si vous omettez le [NE], le # sera converti en son équivalent hexadécimal,% 23, ce qui entraînera une condition d'erreur 404 Not Found.

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