2013年5月15日水曜日

WebDAVでディレクトリのリネームと削除

久しぶりの更新、久しぶりの技術ネタ。
(会社ホームページに技術ブログを作ってこれからは技術情報はそこに書こうというプランが昨年11月から計画されていて全く進んでいない)

Apache 2.4.4 でWebDAVサーバを立てました。
ファイルのアップロード、リネーム、削除 ⇒ OK
ディレクトリの作成 ⇒ OK
ディレクトリのリネーム、削除 ⇒ NG
…あれ?

httpd.conf は基本的に Apache 2.2.x までと同等の設定をしていて特に何も変えていません。
もちろんこれまではディレクトリのリネーム・削除も含めてちゃんと動いていました。

ログを見てみると、リネーム時のMOVEメソッドや削除時のPROPFINDメソッドに対して 405 Method Not Allowed が応答されている模様。
しかもよく見るとディレクトリ指定なのに /index.html に対するアクセスになっているような… おや?

ぐぐってみたらIssueが登録されていました。
Bug 54914 - mod_dir DirectoryIndex breaks WebDAV PROPFIND / DELETE / MOVE
mod_dir が悪さしてる…

今回のサーバは DirectoryIndexディレクティブを使わない(暗黙の index.html を必要としない)構成だったので
LoadModule dir_module modules/mod_dir.so
をコメントアウトして無事WebDAVでのディレクトリリネーム&削除ができるようになりました。
早く直ってほしいですねー。

※WebDAV関連でぐぐったとき出てくる記事が軒並み古くて今回の 2.4.4 固有の症状にたどり着くまでに時間かかった… みんな最新版ApacheでWebDAVなんかしないのかしらん?

1 件のコメント:

  1. ありがとうございます!!おかげで解決しました。
    SSLの設定を行っている最中に、SSL接続確認用にwebdavディレクトリに追加したindex.htmlが悪さしていたとは。。。
    webdavディレクトリにはディレクトリ以外は置くなということですかね。。。

    返信削除