Как я могу отключить определенные методы HTTP (например, PUT или TRACE) и заставить Apache отправлять HTTP «Метод 405 запрещен».
Я пробовал Предел и LimitExcept директивы, но они, кажется, отправляют «403 Forbidden».
У меня есть несколько vhosts - это должно быть во всех, в главном httpd.conf.
Кажется, что определить код ошибки немного сложнее, чем следовало бы.
Однако один способ обхода МОЖЕТ использовать mod_rewrite
. Выкинул это из моей головы из-за того, что по крайней мере в 99% невозможных на вид проблем Apache mod_rewrite может предоставить свой танец вуду и решить вашу проблему.
Если ничего не помогает, попробуйте что-нибудь вроде
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^GET [AND]
RewriteCond %{REQUEST_METHOD} !^POST
RewriteRule .* /yourerrordocuments/405.html [R=405,L]
Я знаю, что это, вероятно, не самое лучшее решение, но оно должен вид работы...
Для метода трассировки вы можете добавить это
TraceEnable off
в вашем основном файле конфигурации
Чтобы включить механизм перезаписи, добавьте следующее:
RewriteEngine On
Обратите внимание, что по умолчанию конфигурации перезаписи не наследуются между виртуальными серверами. Добавьте RewriteEngine On на каждый виртуальный хост.
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]