2013-12-03 27 views
5

Ben şöyle ben RewriteCond GET sorgu dizesi parametrelerini kontrol edebilirsiniz biliyorum:Apache mod_rewrite yeniden yazmaçıkını POST parametreleriyle nasıl kullanırım?

RewriteCond %{REQUEST_URI} ^/somepath/somepath 
RewriteCond %{REQUEST_METHOD} GET 
RewriteCond %{QUERY_STRING} try=3 
RewriteCond %{QUERY_STRING} name=([^&]*) 
RewriteRule ^/somepath/somepath(.*) /otherpath/otherpath?name=%1 [R] 

nasıl isteği gövdesine olan POST parametrelerini kontrol edersiniz? Mod_security'nin bunu yapabildiğini duyuyorum, fakat yukarıdaki örnekte olduğu gibi mod_rewrite ile birlikte mod_security'yi nasıl kullandığımın bir örneğini bulamıyorum.

Ben mesajları işlemek için böyle bir şey kullanmak niyetinde: haricinde

RewriteCond %{REQUEST_URI} ^/somepath/somepath 
RewriteCond %{REQUEST_METHOD} POST 
RewriteRule ^/somepath/somepath(.*) /otherpath/otherpath [PT] 

... Ben "= 3 deneyin" olmadığını görmek için POST parametrelerini inceler bir RewriteCond'ın gerekir.

Modsecurity istek gövdesini denetleyebilir ve bu incelemenin sonucunu bir ortam değişkenine yükleyebilir mi? Bu çalışır ...

+1

Sanırım bunu anladın mı? Çok benzer bir durumla karşı karşıyayım. –

+0

Apache HTTP sunucusunu kullanarak çözüm yok. Benim durumumda, Apache arka uç weblogic sunucusuna ters bir proxy. POST'lar için yönlendirmeleri işlemek için weblogic'te barındırılan bir java servlet yazmayı bitirdim. – Jaffadog

+0

Teşekkürler. Benzer bir şey yapmaya ihtiyacım vardı. Ters proxy olarak küçük bir node.js uygulaması oluşturuldu. İstediğim kadar temiz değil, ama işe yarıyor. –

cevap

5

İstek gövdesini mod_rewrite kullanarak denetleyemezsiniz.

Yapabilecekleriniz varsa, POST isteklerini bir komut dosyasına yeniden yazmanız gerekebilir. Tarayıcıyı yönlendiriyorsanız, her zaman POST verileri yeniden gönderilmez.

+0

Teşekkürler Jon. POST'ları nasıl ele almaya niyetlendiğimi gösteren sorularımı güncelledim. – Jaffadog

İlgili konular