如何在POST参数中使用Apache mod_rewrite rewritecond?

时间:2013-12-03 19:17:33

标签: apache mod-rewrite mod-security

我知道我可以在rewritecond中检查GET查询字符串参数,如下所示:

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_security与mod_rewrite一起使用的例子,如上例所示。

我打算用这样的东西来处理POST:

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

...除了我需要一个RewriteCond来检查POST参数以查看“try = 3”。

modsecurity可以检查请求体并将检查结果加载到环境变量中吗?那会有用......

1 个答案:

答案 0 :(得分:5)

您无法使用mod_rewrite检查请求正文。

如果您可以执行某些操作,则可能必须将POST请求重写为脚本。如果您重定向它们,浏览器始终不会重新发送POST数据。