Apache2 – Transférer une valeur à partir d'une URL ou d'un cookie, selon le cas.

J'ai réussi à utiliser Apache pour éliminer un paramètre d'URL et le replace par un en-tête pour être transmis à un autre server. Voir cette question pour reference.

Maintenant, j'aimerais append ceci en obtenant la valeur de l'en-tête d'un cookie s'il n'est pas présent dans l'URL. Voici ce que j'ai essayé:

<VirtualHost *:80> RewriteEngine On RewriteCond %{QUERY_STRING} ^(.*)memberUuid=(.*)$ RewriteRule ^/(.*)$ http://127.0.0.1:9000/$1 [CO=memberUuid:%2:localhost,E=memberUuid:%2,P] RewriteCond %{HTTP_COOKIE} memberUuid=(.*) RewriteRule ^/(.*)$ http://127.0.0.1:9000/$1 [E=memberUuid:%2,P] ProxyPreserveHost On ProxyPass /excluded ! ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ Header add iv-user "%{memberUuid}e" RequestHeader set iv-user "%{memberUuid}e" </VirtualHost> 

Cela fonctionne toujours si le memberUuid est dans l'URL, mais cela ne semble pas fonctionner avec le cookie. J'ai le cookie memberUuid dans mon browser, mais si je laisse l'URL param désactivé, l'en iv-user tête iv-user a une valeur vide.

J'ai également essayé ([^;]+) pour mon expression régulière, comme recommandé dans cette publication .

Je suis sûr que mon erreur a beaucoup à voir avec moi, étant un apache idiot complet. Je suis un noob complet et je ne suis pas embarrassé de le dire. Inscrivez-moi s'il vous plaît!

modifier

J'ai mis à jour mon hôte virtuel afin que apache configure le cookie memberUuid dans le browser de l'user s'il provient de la string de requête. De cette façon, je peux être sûr que le cookie est présent sur la request suivante (j'avais auparavant le server de destination faire cela).

Ce n'est peut-être pas le seul problème (je n'ai jamais fait de cookie correspondant à mod_rewrite avant); mais je pense que c'est parce que votre reference pour RewriteRule est encore %2 . Vous n'avez qu'une correspondance entre parenthèses dans la RewriteCond précédente, donc elle se développe à rien. Essayez [E=memberUuid:%1,P]