2013-12-03 21 views
5

So che posso controllare i parametri GET stringa di query in RewriteCond come segue:Come utilizzare Apache mod_rewrite rewritecond con i parametri POST?

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] 

Come faccio a ispezionare parametri POST che sono nel corpo della richiesta? Sento che mod_security può farlo, ma non sto trovando alcun esempio di come userei mod_security in congiunzione con mod_rewrite come nell'esempio sopra.

ho intenzione di usare qualcosa di simile per la gestione post:

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

... solo che ho bisogno di un RewriteCond che ispeziona i parametri POST per vedere se "cercare = 3".

Può ModSecurity ispezionare il corpo della richiesta e caricare il risultato di tale ispezione in una variabile di ambiente? che funzionerebbe ...

+1

Immagino che non hai mai avuto questo capito, che hai fatto? Sto affrontando una situazione molto simile. –

+0

Nessuna soluzione che utilizza il server HTTP Apache. Nel mio caso, Apache è un proxy inverso a un server weblog di back-end. Ho finito per scrivere un servlet java ospitato in weblogic per gestire i reindirizzamenti per i POST. – Jaffadog

+0

Grazie. Ho finito per dover fare una cosa simile. Ho costruito una piccola app node.js come proxy inverso. Non è pulito come mi sarebbe piaciuto, ma funziona. –

risposta

5

Non è possibile ispezionare il corpo della richiesta tramite mod_rewrite.

Potrebbe essere necessario riscrivere le richieste POST ad uno script, se questo è qualcosa che si può fare. I browser non inviano sempre i dati POST se li si reindirizza.

+0

Grazie Jon. Ho aggiornato la mia domanda mostrando come intendo gestire i POST - usando PT piuttosto che R. – Jaffadog

Problemi correlati