Linux
帶有 webdav 的 apache2.4 給出 405 錯誤
我剛剛將我的測試機器從 Apache 2.2.29 升級到 2.4.10,實際上我遇到了 webdav 模組的一些問題。
如果我嘗試登錄 webdav 帳戶,它可以工作,但如果我嘗試列出我目前的目錄,我會收到 405 錯誤。
我知道這個新版本的一些配置發生了變化,我做了一些更改以使我的虛擬主機與 2.4 兼容。
我有 2 個虛擬主機,實際上所有這些都來自我的 2.2 設置,我對它們進行了一些更新,以便為 2.4 做好準備。其中一個適用於 webdav,但第二個在列表目錄上生成 405。
這是我正在工作的虛擬主機:
阿帕奇日誌:
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>
現在,那個不工作的人:
阿帕奇日誌:
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
值得注意的是:我管理的其中一個網站在 1 月 7 日被“Hmei7” php 攻擊,該攻擊對我放置在可訪問的地方但被遺忘的 wordpress 舊副本進行了攻擊。不要讓舊的基於 php 的應用程序潛伏在可見的地方!
正如 ThBB 已經指出的那樣,這
DirectoryIndex
就是問題所在,因為索引腳本將接收 HTTP 請求並且不會處理它。在我的情況下,我需要索引功能,因為我在目標目錄中有一個 Web 應用程序。我有一個部署腳本,它刪除目錄,再次創建它,然後上傳所有文件。為了讓我的部署腳本與我一起工作,
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 ...