1

我试图阻止根文件夹中的所有 HTTP POST 请求,但允许 HTTPS POST。我正在处理大量占用服务器带宽的 POST 请求,但它们都是 HTTP。当实际客户来到网站时,需要 POST 操作(登录等),但它们都是在 HTTPS 页面上完成的。我可以清除有问题的请求并只允许 HTTPS POST 操作吗?使用以下我可以阻止:

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !127.0.0.1   
RewriteRule ^ / [F]

然后尝试这样做以允许 HTTPS:

#if https on
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^ / [L] 

#else
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !127.0.0.1   
RewriteRule ^ / [F] 

它返回 500 内部服务器错误。请注意,合法的 POST 请求确实源自根目录,因此我不能只在允许 POST 的子文件夹中添加特殊的 .htaccess。

4

1 回答 1

1

您可以像这样阻止所有HTTP POST请求:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_METHOD} POST
# allow localhost
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.1$   
RewriteRule ^ - [F] 
于 2013-10-04T21:06:24.583 回答