我试图将页面锁定为仅接受POST请求。作为RESTful API的一部分。我有以下内容,但它似乎不起作用。任何帮助将不胜感激。
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^api/(call1|call2|call3)/?/ http://www.example.com/api/rest_services.php?_call=$1 [L]
答案 0 :(得分:8)
您需要将条件反转为仅匹配非POST的请求:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule ^api/(call1|call2|call3)/?/ - [L,R=405]
然后你还应该发送405 status code告诉客户原因。但是R=405
标志仅在Apache 2之后可用。对于Apache 1,您可以将这些请求发送到响应该状态代码的PHP脚本。
答案 1 :(得分:2)
我没有资格回答关于.htaccess
的问题,但这是我宁愿这样做的方式:
<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
die('some meaningful REST style error here');
}
答案 2 :(得分:1)
我的错误。 RewriteRule上的语法错误。应该如下。请注意 $ 而非 /
RewriteRule ^api/(call1|call2|call3)/?$ http://www.example.com/api/rest_services.php?_call=$1 [L]
答案 3 :(得分:0)
与<Location>
:
<Limit GET>
Deny from all
</Limit>