HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (http://www.howtoforge.com/forums/index.php)
-   Server Operation (http://www.howtoforge.com/forums/forumdisplay.php?f=5)
-   -   Using cookie content as RewriteRule variable in Apache ReverseProxy (http://www.howtoforge.com/forums/showthread.php?t=60254)

flyingmg 18th January 2013 09:22

Using cookie content as RewriteRule variable in Apache ReverseProxy
 
Hi,

I have two questions regarding the use of cookies in Apache RewriteRules:

I want to build a specific URL depending on the content of a cookie.

This is how I get my cookie:
Code:

RewriteCond %{HTTP:Cookie} !aCookie=set
        RewriteCond %{REQUEST_URI} ^/(.*)/mail/
        RewriteRule /(.*)/mail/ - [CO=ServerName:$1:.acme.com,CO=aCookie:set:.acme.com]

This works and I get the server name depending on the URL pattern in my cookie ServerName. This cookie is then used during the whole session.

Now I'd like to:
1. check wether the cookie is set (without knowing its content). I was not able to achieve that until now and actually set a second cookie (aCookie in my example above) and check for its content as a first condition. Does the first line of my example below achieve that? I couldn't verify that until now...

2. use the content of the cookie ServerName to build subsequent URLs
I thought, that I could build something like:

Code:

        RewriteCond %{HTTP:Cookie} !ServerName=                # does this check for the existence of the cookie????
        RewriteCond %{REQUEST_URI} ^/
        RewriteRule /(.*) http://<Content of saved cookie>.acme.com/$1 [P]

But could not find any hint on how to achieve that until now.

Any hints would be greatly appreciated.

Thx, Marc

My question is related to Apache 2.4 as reverse proxy on ubuntu 12.04.1

flyingmg 24th January 2013 12:11

Meanwhile I could figure out how to access to the content of the cookie. But I am still stuck with a RewriteCond that should just check wether the cookie is set or not, independnatly from its content. The content should be used as a result of the condition being fullfilled and putting it into %1.
After some google search, I found several example how to check for some content and changed it, so that I thought it should match my needs. Unfortunatly, it does not work as desired until now.
My rewrite condition and rule looks actually like that:
Code:

RewriteCond %{HTTP_COOKIE} ServerName=(.*)[-,;]?
RewriteCond %{REQUEST_URI} ^/
RewriteRule /(.*) http://%1.acme.com/$1 [P]

How should my Rewritecond looks like, so that it checks that the cookie is set to anything and return its content back? :confused:
Any hint would be greatly apreciated. :)
Thx, M.

flyingmg 7th February 2013 13:58

SOLVED: Using cookie content as RewriteRule variable in Apache ReverseProxy
 
Just to close this thread and tag it as solved, if somebody is looking for a solution for a similar problem.
Here is the solution:

If have a cookie named ServerName, I want to check for its availability and use its content for building a URL:

Code:

RewriteCond %{REQUEST_URI} ^/
RewriteCond %{HTTP_COOKIE} ^.*ServerName=([^;]+)
RewriteRule /(.*) http://%1.acme.com/$1 [P]

does the trick.
Hope this helps somebody... :)


All times are GMT +2. The time now is 22:18.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.