SOFTELメモ

Softel Inc.

【Apache】PUTリクエストが 405 Method Not Allowed になる

問題

HTMLファイルや画像ファイルのURLに、PUTリクエストを送ると、405 Method Not Allowed になるのですが、そういうものなのですか?

$ curl http://localhost/test/index.html -X PUT
$ curl http://localhost/readme.txt -X DELETE

→ 405 Method Not Allowed

apache HTTP method

答え

特に指定がない場合、デフォルトのハンドラー(default_handler())が処理しますが、apacheのソースを見ると、default_handler()は、GETメソッドとPOSTメソッド(とOPTIONS)以外は、HTTP_METHOD_NOT_ALLOWED(405 Method Not Allowed)か HTTP_NOT_IMPLEMENTED(501 Not Implemented)を返しています。

phpのハンドラーなど、PUTメソッドでもHOGEメソッドでも受け付けるハンドラーに処理させる設定になっていればまた結果が違いますが、デフォルトのハンドラーが処理すれば 405 Method Not Allowed などになります。

$ curl http://localhost/test/index.php -X HOGEHOGE

→ 200 OK でレスポンスが返ってくるし、php側でHOGEHOGEメソッドだった場合の処理を書くこともできる

PUTやDELEETで 405 Method Not Allowed にしたくない、どこかしらで処理をしたいのであれば、
Scriptディレクティブで設定するのが簡単です。

&glt;Directory /var/www/test>
    Script PUT /put.php
    Script DELETE /delete.php
    Script HOGE /hoge.php
&glt;/Directory>

関連するメモ

コメント