Назад | Перейти на главную страницу

Отключить методы HTTP в Apache

Как я могу отключить определенные методы 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]