我试图锁定一个页面,只接受POST请求。作为RESTful API的一部分。我有以下,但它似乎并没有工作。任何帮助,将不胜感激。在POST请求的.htaccess中使用RewriteRule
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^api/(call1|call2|call3)/?/ http://www.example.com/api/rest_services.php?_call=$1 [L]
我试图锁定一个页面,只接受POST请求。作为RESTful API的一部分。我有以下,但它似乎并没有工作。任何帮助,将不胜感激。在POST请求的.htaccess中使用RewriteRule
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^api/(call1|call2|call3)/?/ http://www.example.com/api/rest_services.php?_call=$1 [L]
我的错。 RewriteRule上的语法错误。应该是以下内容。注意$没有/
RewriteRule ^api/(call1|call2|call3)/?$ http://www.example.com/api/rest_services.php?_call=$1 [L]
我没有资格回答这个问题有关.htaccess
,但是这是我宁愿做也无妨方式:
<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
die('some meaningful REST style error here');
}
是的。如果你有错误信息,你的用户会更快乐,也更少迷惑。 – 2010-01-14 20:49:27
谢谢,并同意。但还有其他因素支持RewriteRule解决方案。另外,现在是一项任务。 – 2010-01-14 21:36:14
您需要反转只匹配不在POST请求的条件:
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule ^api/(call1|call2|call3)/?/ - [L,R=405]
然后你也应该送405 status code告诉客户端原因。但R=405
标志仅在Apache 2之后才可用。对于Apache 1,您可以将这些请求发送给以该状态码作为响应的PHP脚本。
使用此连同<Location>
:
<Limit GET>
Deny from all
</Limit>
它是如何不工作?具体而言,它是否阻止任何东西或一切? – 2010-01-14 20:42:20
给出404响应 – 2010-01-14 21:36:56