如何在htaccess中的某个url上阻止post方法

时间:2013-06-14 17:47:02

标签: php apache .htaccess

是否可以在某些网址上阻止POST方法,例如

www.mydomain.com/dontposthere
www.mydomain.com/something/againdontposthere

在htaccess中?

2 个答案:

答案 0 :(得分:8)

如果您有权访问mod_rewrite,则可以检查REQUEST_METHOD环境变量并将该网址重写到另一个页面,该页面会显示一条消息,上面写着“您不允许发布”

创建一个包含以下消息的页面:/var/www/noPost.php

You are not allowed to post to this page

然后使用像这样的.htaccess规则:

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^/dontposthere [OR]
RewriteCond %{REQUEST_URI} ^/something/againdontposthere
RewriteRule .* /noPost.php [L,QSA]

您可以创建文件/文件夹列表作为匹配条件,甚至可以创建正则表达式模式以匹配多个文件/文件夹。除了最后一个,你只需要放[OR]

答案 1 :(得分:1)

编写“noPost”页面的替代方法,只需直接使用F|forbidden flag返回403响应:

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^/dontposthere
RewriteRule .* - [F,L]