특정 HTTP 메소드 (예 : PUT 또는 TRACE)를 비활성화하고 Apache가 HTTP “405 Method not allowed”를 보내도록하려면 어떻게해야합니까?
Limit 및 LimitExcept 지시문을 시도했지만 “403 Forbidden”을 보내는 것 같습니다.
몇 개의 vhost가 있습니다. 이것은 주 httpd.conf에서 모든 호스트에 있어야합니다.
답변
실제로 오류 코드를 정의하는 것이 생각보다 조금 어려워 보입니다.
그러나 한 가지 해결 방법은을 사용할 수 mod_rewrite
있습니다. 불가능 해 보이는 아파치 문제의 적어도 99 %에서 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을 추가하십시오.
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]