仅使用.htaccess允许HTTPS POST请求

时间:2013-10-04 21:04:23

标签: regex .htaccess post mod-rewrite https

我正在尝试阻止我的根文件夹中的所有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请求确实来自root,因此我不能在允许POST的子文件夹中添加特殊的.htaccess。

1 个答案:

答案 0 :(得分:1)

您可以阻止所有HTTP POST个请求:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_METHOD} POST
# allow localhost
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.1$   
RewriteRule ^ - [F]