Apache에서 HTTP 메소드 비활성화 어떻게해야합니까? Limit 및 LimitExcept 지시문을

특정 HTTP 메소드 (예 : PUT 또는 TRACE)를 비활성화하고 Apache가 HTTP “405 Method not allowed”를 보내도록하려면 어떻게해야합니까?

LimitLimitExcept 지시문을 시도했지만 “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]


답변