Я только что обновил свою тестовую машину с Apache 2.2.29 до 2.4.10, и на самом деле у меня возникли проблемы с модулем webdav.
Если я попытаюсь войти в учетную запись webdav, она сработает, но если я попытаюсь указать свой текущий каталог, я получу ошибку 405.
Я знаю некоторые изменения в этой новой версии, я внес некоторые изменения, чтобы мой виртуальный хост был совместим с 2.4.
У меня есть 2 виртуальных хоста, на самом деле все они взяты из моей установки 2.2, я немного обновил их, чтобы быть готовым к 2.4. Один из них отлично работает с webdav, но второй генерирует 405 в каталоге листинга.
Вот мой виртуальный хост, который работает:
Журнал Apache:
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 info@test.com
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>
А теперь тот, кого нет работает :
Журнал Apache:
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 info@test.com
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>
Как видите, моя конфигурация DAV точно такая же. Папки имеют одинаковую конфигурацию:
drwxr-xr-x 7 www-data www-data 26 déc. 24 12:07 dev
Если кто-то поймет, почему я не могу перечислить свой каталог, это мне очень поможет :)
Кажется, есть несколько людей, которые столкнулись с этой проблемой после последнего обновления.
Я нашел свой ответ Вот: в Dav в каталогах отключите функции индексации каталога с помощью следующей директивы:
DirectoryIndex disabled
Примечательно: один из веб-сайтов, которыми я управляю, был поврежден 7 января в результате php-атаки "Hmei7" на старые копии wordpress, которые я разместил в доступном месте и забыл. Не оставляйте старые приложения на базе php в видимых местах!
Как уже указывал ThBB, DirectoryIndex
проблема, потому что индексный скрипт получит HTTP-запрос и не сможет его обработать.
В моем случае мне нужна функция индекса, потому что у меня есть веб-приложение в целевом каталоге. У меня есть сценарий развертывания, который удаляет каталог, снова создает его, а затем загружает все файлы. Чтобы мой сценарий развертывания работал вместе с DirectoryIndex
Мне просто пришлось разместить дополнительный DELETE
запрос индексного файла перед DELETE
запрос на содержащий каталог:
DELETE /my-app/index.html
DELETE /my-app
MKCOL /my-app
POST /my-app/index.html
POST /my-app/foo.bar
... all other files ...