2013-12-03 117 views
5

我知道我可以在檢查的RewriteCond GET查詢字符串參數如下:如何將Apache mod_rewrite rewritecond與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] 

如何檢查是在請求體POST參數?我聽說mod_security可以做到這一點,但我沒有找到任何與mod_rewrite一起使用mod_security的例子,就像上面的例子一樣。

我打算用這樣的事情來處理文章:

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

......除了我需要檢查的POST參數,看看「試= 3」的一條的RewriteCond。

modsecurity可以檢查請求體並將該檢查的結果加載到環境變量中嗎?這將工作...

+1

我不認爲你有這個想法,是嗎?我面臨着非常類似的情況。 –

+0

沒有使用Apache HTTP服務器的解決方案。就我而言,Apache是​​後端weblogic服務器的反向代理。我最終編寫了一個用weblogic託管的java servlet來處理POST的重定向。 – Jaffadog

+0

謝謝。我最終需要做類似的事情。構建一個小的node.js應用程序作爲我的反向代理。沒有我想要的那麼幹淨,但它的工作原理。 –

回答

5

你不能使用mod_rewrite檢查請求主體。

如果這是您可以執行的操作,您可能必須重寫POST請求到腳本。瀏覽器並不總是會重新發送POST數據。

+0

謝謝喬恩。我更新了我的問題,顯示了我打算如何處理POST - 使用PT而不是R. – Jaffadog

相關問題