Soru Apache'de HTTP Yöntemlerini Devre Dışı Bırak


Belirli HTTP Yöntemlerini (örneğin PUT veya TRACE) nasıl devre dışı bırakabilirim ve Apache'nin bir HTTP "405 Metoduna izin verilmez" göndermesini nasıl sağlayabilirim.

Denedim limit ve Limit dışı direktifler ancak "403 Yasak" yolluyorlar.

Birkaç vhost'um var - bunların hepsinde, ana httpd.conf'ta olmalı.


10
2017-11-01 11:32


Menşei




Cevaplar:


Gerçekten de hata kodunu tanımlamanın gerekenden daha zor olduğu anlaşılıyor.

Ancak, bir geçici çözüm MIGHT kullanıyor mod_rewrite. Benim başımın dışına çıkarak, imkansız görünen Apache problemlerinin en az% 99'unda mod_rewrite'nin voodoo dansını sağlayabileceğini ve probleminizi çözebileceğine karar verdim.

Eğer her şey başarısız olursa,

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

Bunun muhtemelen en güzel çözüm olmadığını biliyorum, ama meli iş türü...


13
2017-11-01 12:51



+1 Mod_rewrite voodoo tüm problemleri çözer (tüm sınırlı setler için). - Chris S
Mod_rewrite ayrıca, her URL işleminde yavaş bir regex çalıştırır ve bu da sunucuyu yavaşlatır. Dikkatle kullanın. - Marcin
Teşekkürler - R = 405 ile cevap kodunu ayarlayarak güzel numara. Daha iyi bir yol olacağını umuyordum, bu yüzden OPTIONS doğru değerleri rapor ediyordu ama sanırım bu mümkün değil - Greg
Apache / mod_rewrite hangi sürümü [AND] bayrağını destekliyor? Sadece [VEYA] (ve "ve" örtük olarak) görüyorum: httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond - asjo


İzleme yöntemi için bunu ekleyebilirsiniz

TraceEnable off

ana yapılandırma dosyanızda


4
2017-11-01 13:14





Yeniden yazma motorunu etkinleştirmek için aşağıdakileri ekleyin:

 RewriteEngine On 

Varsayılan olarak, yeniden yapılandırma yapılandırmalarının sanal sunucularda devralınmayacağını unutmayın. Her sanal ana bilgisayara RewriteEngine Açık ekleyin.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]

2
2018-06-06 11:20