• Home
  • Blog
  • Apache mod_rewrite frustration

Apache mod_rewrite frustration

Vincent Danen

May 05, 2012

Dear lazyweb, I'm having severe issues with Apache's mod_rewrite on my VPS. I'm pretty sure what I want to do is doable, but I can't figure out the rewrite rules to allow it.

In my httpd.conf I have something similar to this:

<IfModule mod_dav.c>
    LimitXMLRequestBody 131072
    DavLockDB /var/dav/DavLock

    Alias /dav "/home/user/dav"
    #<Directory /home/user/dav>
    <Location /dav>
        Dav On
        Options +Indexes
        IndexOptions FancyIndexing
        AddDefaultCharset UTF-8
        AuthType Basic
        AuthName "Private"
        AuthUserFile /home/user/dav.passwd
        Require valid-user
    </Location>
    #</Directory>
</IfModule>

This worked fine when the root of the site had nothing but a simple index.html in it. Now I've got Drupal7 installed, so it does all the fancy mod_rewrite stuff to get the clean urls, etc. And now when I go to https://site/dav, Drupal is answering and saying "no such directory". If I have /home/user/dav for the private WebDAV share, I'm using /home/user/public_html/ for the accessible web site (I do this to prevent any accidental exposure to those data files). Incidentally I tried with both and and it makes no difference.

The .htaccess in /home/user/public_html/ looks like this (just the important bits):

<IfModule mod_rewrite.c>
  RewriteEngine on

  RewriteRule ^/dav(/.*)$ /dav/$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

</IfModule>

I've tried a number of variations (the above is my latest try). Also tried things like:

  RewriteCond %{REQUEST_URI} !^/dav

With and without the extra .* bits, etc.

I am literally tearing my hear out here. Does anyone have any idea what I'm doing wrong? I basically want it to go "hey, you want /dav? ok, I won't rewrite anything and you can have it) and have /dav/[whatever] loaded requiring auth to access. Something in the mod_rewrite is killing it, and I suspect it might have to do with Alias. Maybe all this stuff needs to be in httpd.conf instead of .htaccess?

Leave a Comment

Comments use MarkDown. Need help? MarkDown Cheatsheet