2013-12-03 12 views
5

Ich weiß, ich kann GET-Abfrage-String-Parameter in RewriteCond prüfen wie folgt:Wie verwende ich Apache mod_rewrite rewritecond mit POST-Parametern?

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] 

Wie POST-Parameter I überprüfen, die in der Anfrage Körper sind? Ich höre mod_security kann es tun, aber ich finde keine Beispiele dafür, wie ich mod_security in Verbindung mit mod_rewrite wie im obigen Beispiel verwenden würde.

Ich beabsichtige, so etwas zu verwenden POSTs zu handhaben:

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

... außer, dass ich brauche eine RewriteCond, die die POST-Parameter überprüft, um zu sehen, ob „versuchen = 3“.

Kann Modsecurity den Anfragetext prüfen und das Ergebnis dieser Prüfung in einer Umgebungsvariablen laden? das würde funktionieren ...

+1

Ich nehme an, du hast das nie verstanden, oder? Ich stehe vor einer sehr ähnlichen Situation. –

+0

Keine Lösung mit Apache HTTP Server. In meinem Fall ist Apache ein Reverse-Proxy für einen Back-End-Weblogic-Server. Am Ende schrieb ich ein Java-Servlet, das in weblogic gehostet wurde, um Weiterleitungen für POSTs zu behandeln. – Jaffadog

+0

Danke. Ich musste am Ende eine ähnliche Sache machen. Erstelle eine kleine node.js App als meinen Reverse Proxy. Nicht so sauber wie es mir gefallen hätte, aber es funktioniert. –

Antwort

5

Sie können den Anfragetext nicht mit mod_rewrite überprüfen.

Sie müssen möglicherweise POST-Anforderungen in ein Skript umschreiben, wenn dies etwas ist, was Sie tun können. Browser werden nicht immer POST-Daten erneut senden, wenn Sie sie umleiten.

+0

Danke Jon. Ich habe meine Frage aktualisiert, die zeigt, wie ich mit POSTs umgehen will - mit PT anstatt mit R – Jaffadog

Verwandte Themen