京都大学東南アジア地域研究研究所 情報処理室

(サーバ) PUTエラーでWEBDAVが利用できないときは?

サーバ管理者向けの情報です。

Apache 2.2からは少なくても下記の点に注意が必要です。

  1. SELinuxを有効にしている場合
  2. .htaccessによるRewriteルールを設定している場合

前者については、一度機能をOFFにして試してみてください。それで問題が解決するようなら、SELinuxの問題です。これについてはここでは割愛します。

前提条件として、SELinuxが無効になっているにも関わらず、

というエラーログとともに、閲覧やすでにあるファイルのデータ編集・保存が可能で、コピーや追加などができない場合には、「2」に該当する可能性があります。

特に、WordPressなどCMSツールを使ったウェブサイト構築においては、たとえばパーマネント設定をしたときなどにCMS自身が.htaccessに対して設定を書き込むことがあります。そのルールの中にRewriteが書かれていると、上記エラーと共にWebDAV経由のファイルアップロードやコピーが出来なくなります。

解決策

  1. .htaccessではなく、Apacheの設定に直接書き込む
  2. Rewriteの機能を止める

の二通りあります。

1. .htaccessではなく、Apacheの設定(httpd.conf等)に直接書き込む

WordPressの一例としては、

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index¥.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

です。もしキャッシュ系プラグインを使っているなら、設定が増えているかもしれません。

2. Rewriteの機能を止める

<IfModule mod_rewrite.c>
いろいろな設定とか。
RewriteEngine off
</IfModule>

のように、「RewriteEngine off」を入れておくことです。
しかしながら、WordPress等でパーマネント設定を使っている場合には誤動作するかもしれません。

関連情報

モバイルバージョンを終了