A Quark of A Different Spin. (adameros) wrote in apache,
A Quark of A Different Spin.
adameros
apache

Rewrite rule help in apache 2.

We are using dynamic virtual hosting for a number of domains. The original request was to be able to go to http://somedomain.com/dav and update a webpage. This worked great. But now we would like to do this with dav over ssl. We don't want to buy an ssl certificate for every domain, so I would like to do a redirect from the virtual host to the ssl host. I can not do a Redirect /dav https://sslhost.com/davvhosts/%O as Redirect can not handle the %O.

So I would like to do a Rewrite on the ssl server based on the HTTP_REFERER variable, but I can't get it to work:



The Virtual host stuff:
<VirtualHost *>
  UseCanonicalName Off
  CustomLog logs/access_log vcommon
  VirtualDocumentRoot /web/vhosts/%0/htdocs
  VirtualScriptAlias /web/vhosts/%0/cgi-bin
  <Directory />
    Options FollowSymLinks ExecCGI Multiviews Includes
    AllowOverride All
  </Directory>
  <Location /tools/login>
    ForceType application/x-httpd-php
  </Location>
  Redirect /dav https://www.sightworks.net/davvhosts
</VirtualHost>


Then in the SSL side I tried a couple things. First just modifying the HTTP_REFERER variable:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{HTTP_REFERER} /dav/
RewriteRule ^http://(.*)/dav/ $1
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond %{REQUEST_URI} ^/davvhosts/
RewriteRule ^/(.*)$ /www/vhosts/${lowercase:%{HTTP_REFERER}}/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /www/vhosts/${lowercase:%{HTTP_REFERER}}/cgi-bin/$1 [T=application/x-httpd-cgi]
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond %{REQUEST_URI} ^/davhosts/
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{HTTP_REFERER}}/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/

I also tried just setting a different variable and using it, but that did not work either:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{HTTP_REFERER} /dav/
RewriteRule ^http://(.*)/dav/ - [E=HTTP_REFERER_HOST:$1]
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond %{REQUEST_URI} ^/davvhosts/
RewriteRule ^/(.*)$ /www/vhosts/${lowercase:%{HTTP_REFERER_HOST}}/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteRule ^/(.*)$ /www/vhosts/${lowercase:%{HTTP_REFERER_HOST}}/cgi-bin/$1 [T=application/x-httpd-cgi]
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond %{REQUEST_URI} ^/davhosts/
RewriteRule ^/(.*)$ /www/hosts/${lowercase:%{HTTP_REFERER_HOST}}/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/


In both cases it looks like the variable being set ends up blank.

Is what I want to do possible? If so, what am I doing wrong?



CANCEL THAT QUESTION! I figured out the answer:

  RewriteEngine on
  RewriteLog    /web/etc/httpd/logs/rewrite.log
  RewriteCond   %{REQUEST_URI}  ^/dav$  [OR]
  RewriteCond   %{REQUEST_URI}  ^/dav/
  RewriteCond   %{HTTP_HOST}    !^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$
  RewriteRule   ^/dav.*$                https://www.sslhost.net/davvhosts/%{HTTP_HOST}/      [R,L]
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments