Using cookie content as RewriteRule variable in Apache ReverseProxy

Discussion in 'Server Operation' started by flyingmg, Jan 18, 2013.

  1. flyingmg

    flyingmg New Member

    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
     
  2. flyingmg

    flyingmg New Member

    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.
     
  3. flyingmg

    flyingmg New Member

    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... :)
     

Share This Page