2013-12-03 40 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