【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
答え
特に指定がない場合、デフォルトのハンドラー(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>
コメント