I recently upgraded Apache from 2.2 to 2.4 and among all the expected changes that had to be made to the existing sites-available config files, I encountered an unexpected issue with the WebDAV sites.

I could connect to the sites via DAV but weirdly enough I could not open some directories with them. I would get a “405 Method Not Allowed error”.

It turns out that if a collection in a WebDAV-enabled area contains an index.html (or whatever filename is specified in DirectoryIndex – index.php, default.html, etc.) then it becomes impossible to use WebDAV methods on that collection. See bug report.

In order to fix this, you need to disable directory indexing for the WebDAV site(s).

If you still want to have directory indexing when serving regular http requests, I recommend having WebDAV configured on a different port.

I normally have development sites, server reqular requests on port 80 and have the WebDAV configured on port 443.

So, in your sites-available/site.conf file, in the corresponding VirtualHost declaration add DirectoryIndex disabled to the Directory declaration, like so:


    <Directory /path/to/my/webdav/dir>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride all
                    Require all granted

                    DirectoryIndex disabled
   </Directory>

Here is an example config file:


DavLockDB /webdav/DavLock/DavLock

<VirtualHost 111.1.1.1:80>
	ServerAdmin webmaster@localhost
	ServerName my.domain.com
	DocumentRoot /var/www/my.domian.com/

	Alias /web /path/to/my/webdav/dir

	<Directory /path/to/my/webdav/dir>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Require all granted
 	</Directory>

</VirtualHost>

<VirtualHost 111.1.1.1:443>

    DocumentRoot /var/www/my.domian.com/
    ServerName my.domian.com
    ServerAlias my.domian.com 111.1.1.1.my.domian.com

	Alias /web /path/to/my/webdav/dir

	<Directory /path/to/my/webdav/dir>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Require all granted

		DirectoryIndex disabled
 	</Directory>

	<Location /web>
		DAV On
		AuthType Digest
		AuthName "the_auth_name"
		AuthUserFile /the/digest.dav
		Require valid-user

		php_value engine off 
		RewriteEngine off	
	</Location>

    SSLEngine on
    SSLOptions +StrictRequire

    SSLCertificateFile /etc/ssl/certs/mydomain.com.crt
    SSLCertificateKeyFile /etc/ssl/private/mydomain.com.key
    SSLCACertificateFile /etc/ssl/certs/mydomain.com.cabundle.crt
</VirtualHost>

Then just reload Apache and you will no longer have that issue:

sudo service apache2 reload
Upgrading to Apache 2.4 will prevent WebDAV listing of directories containing index files
Tagged on:         

Leave a Reply

Your email address will not be published. Required fields are marked *

*