apache2.4 with webdav give an 405 error

13,686

Solution 1

There seems to be a bunch of people who have come accross this issue after the last update.

I found my answer here: on the Dav on directories, disable the Directory index features with the following directive:

DirectoryIndex disabled

Of note: one of the websites I manage was defaced on January 7th through an "Hmei7" php attack on old copies of wordpress I had placed in an accessible place and forgotten about. Don't leave old php-based apps lurking around at visible places!

Solution 2

As ThBB already pointed out, the DirectoryIndex is the problem, because the index script will receive the HTTP request and won't handle it.

In my case I need the index-feature, because I have a web app in the target directory. I have a deployment script which deletes the directory, creates it again and then uploads all files. To keep my deployment script working together with DirectoryIndex I simply had to place an additionaly DELETE request for the index file before the DELETE request for the containing directory:

DELETE /my-app/index.html
DELETE /my-app
MKCOL /my-app
POST /my-app/index.html
POST /my-app/foo.bar
... all other files ...
Share:
13,686

Related videos on Youtube

Maxence
Author by

Maxence

Updated on September 18, 2022

Comments

  • Maxence
    Maxence almost 2 years

    I just upgraded my test machine from Apache 2.2.29 to 2.4.10 and actually Im getting some issue with webdav module.

    If I try to login to a webdav account it works but if I try to list my current directory I got a 405 error.

    I know some config as change with this new version, I did some change to get my virtualhost compatible with 2.4.

    I got 2 virtualhost actualy all of these are come from my 2.2 setup, I updated them a bit to be ready with 2.4. One of them works fine with webdav but the second one generate a 405 on listing directory.

    Here is my virtualhost who is working:

    Apache log :

    10.19.87.87 - maxence [02/Jan/2015:16:30:12 +0100] "PROPFIND / HTTP/1.1" 207 6331 "-" "Cyberduck/4.6.1 (16121) (Windows 7/6.1) (x86)"
    

        <VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /home/web/working/dev/
    
        ServerName webdav.working.test.net
        ServerAlias webdav.working.test.net
    
        ErrorLog /var/log/apache2/net.test.working.webdav-error.log
        CustomLog /var/log/apache2/net.test.working.webdav-access.log combined
    
        <Files ".ht*">
            allow from all
        </Files>
    
        <Directory />
            Options FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
    
        <Location />
            DAV on
            AuthName "test WebDAV Storage - working"
            AuthType Basic
            AuthUserFile /etc/apache2/htpasswd-webdav
            <Limit GET POST PUT DELETE PROPFIND PROPPATCH MKCOL COPY DUPLICATE MOVE LOCK UNLOCK OPTIONS HEAD>
            Require valid-user
            </Limit>
            AddType text/html .php .phtml
        </Location>
    
    </Virtualhost>
    

    And now, the one who is not working :

    Apache Log :

    10.19.87.87 - maxence [02/Jan/2015:16:10:54 +0100] "PROPFIND / HTTP/1.1" 405 475 "-" "Cyberduck/4.6.1 (16121) (Windows 7/6.1) (x86)"
    

    <VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /home/web/notworking/dev/
    
        ServerName webdav.notworking.test.net
        ServerAlias webdav.notworking.test.net
    
        ErrorLog /var/log/apache2/net.test.notworking.webdav-error.log
        CustomLog /var/log/apache2/net.test.notworking.webdav-access.log combined
    
        <Files ".ht*">
            allow from all
        </Files>
    
        <Directory />
            Options FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
    
        <Location />
            DAV on
            AuthName "test WebDAV Storage - notworking"
            AuthType Basic
            AuthUserFile /etc/apache2/htpasswd-webdav
            <Limit GET POST PUT DELETE PROPFIND PROPPATCH MKCOL COPY DUPLICATE MOVE LOCK UNLOCK OPTIONS HEAD>
            Require valid-user
            </Limit>
            AddType text/html .php .phtml
        </Location>
    
    </Virtualhost>
    

    As you can see my DAV config are exactly the same. Folders rigth got same configuration :

     drwxr-xr-x 7 www-data www-data      26 déc.  24 12:07 dev
    

    If someone got any clue to know why I can't list my directory, it'll help me a lot :)