Disable HTTP Methods in Apache

apache-2.2

How can I disable certain HTTP Methods (for example PUT or TRACE) and have Apache send an HTTP "405 Method not allowed".

I've tried the Limit and LimitExcept directives but they seem to send "403 Forbidden".

I have several vhosts – this should be across all of them, in the main httpd.conf.

Best Answer

It really seems that defining the error code is a bit harder than it should be.

However, one workaround MIGHT be using the mod_rewrite. Popped that one out of my head due the fact that in at least 99% of impossible-looking Apache problems mod_rewrite can provide its voodoo dance and solve your problem.

If everything else fails, try something like

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST 
RewriteRule .* /yourerrordocuments/405.html [R=405,L] 

I know that is probably not the nicest solution around, but it should kind of work...