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


11

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

Ben Limit ve LimitExcept direktiflerini denedim ama "403 Yasak" göndermek gibi görünüyor.

Birkaç vhost'um var - bu hepsinin karşısında olmalı, ana httpd.conf dosyasında.

Yanıtlar:


14

Gerçekten hata kodunu tanımlamak olması gerekenden biraz daha zor görünüyor.

Ancak, bir geçici çözüm mod_rewrite. İmkansız görünümlü Apache sorunlarının en az% 99'unda mod_rewrite'ın vudu dansı sağlayabileceği ve sorununuzu çözebileceği gerçeği nedeniyle kafamdan çıktı.

Diğ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 bir çeşit iş olmalı ...


1
+1 Mod_rewrite voodoo tüm problemleri çözer (sınırlı setler için).
Chris S

6
Mod_rewrite ayrıca her URL işleminde yavaş regex çalıştırır, bu da sunucuyu yavaşlatır. Dikkatle kullanın.
Marcin

Teşekkürler - R = 405 ile yanıt kodunu ayarlama güzel hile. SEÇENEKLER doğru değerleri bildirmek için daha iyi bir yol olacağını umuyordum ama sanırım bu mümkün değil
Greg

Hangi Apache / mod_rewrite sürümü [AND] bayrağını destekliyor? Sadece [OR] (ve "ve" ve "örtük olduğunu) görüyorum
asjo 19:18

4

İzleme yöntemi için bunu ekleyebilirsiniz

TraceEnable off

ana yapılandırma dosyanızda


2

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

 RewriteEngine On 

Varsayılan olarak, yeniden yazma yapılandırmalarının sanal sunucular arasında devralınmadığını lütfen unutmayın. Her sanal ana bilgisayara RewriteEngine On ekleyin.

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.