テストマシンをApache 2.2.29から2.4.10にアップグレードしたところ、実際にwebdavモジュールで問題が発生しました。
Webdavアカウントにログインしようとすると機能しますが、現在のディレクトリを一覧表示しようとすると405エラーが発生します。
この新しいバージョンでの変更として一部の構成を知っています。仮想ホストを2.4と互換性を持つように変更しました。
私は2つのvirtualhostを実際に取得しました。これらはすべて2.2セットアップからのものです。2.4に対応するために少し更新しました。それらの1つはwebdavで正常に動作しますが、2つ目はリストディレクトリに405を生成します。
これがworkingである私の仮想ホストです:
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 [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>
そして今、そうではない人working:
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 [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>
ご覧のとおり、私のDAV構成はまったく同じです。フォルダrigthは同じ設定を取得しました:
drwxr-xr-x 7 www-data www-data 26 déc. 24 12:07 dev
誰かがディレクトリを一覧表示できない理由を知る手掛かりを得た場合、それは私に多くの助けになります:)
前回のアップデート後にこの問題に遭遇した人がたくさんいるようです。
私は私の答えを見つけました ここ :ディレクトリのDavで、次のディレクティブを使用してディレクトリインデックス機能を無効にします。
DirectoryIndex disabled
注意:私が管理しているWebサイトの1つは、1月7日に、wordpressの古いコピーへの "Hmei7" php攻撃によって改ざんされました。目に見える場所に潜んでいる古いphpベースのアプリ!
ThBBがすでに指摘したように、DirectoryIndex
が問題です。これは、インデックススクリプトがHTTPリクエストを受け取り、それを処理しないためです。
私の場合、ターゲットディレクトリにWebアプリがあるため、index-featureが必要です。ディレクトリを削除して再度作成し、すべてのファイルをアップロードするデプロイメントスクリプトがあります。展開スクリプトを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 ...