2010-01-14 7 views
0

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] 
+0

방법이 작동하지 않습니다

<Limit GET> Deny from all </Limit> 
? 특히, 아무것도 차단하지 않습니까? –

+0

404 응답을 제공합니다. –

답변

1

내 실수. RewriteRule의 구문 오류입니다. 다음과 같아야합니다. 참고 $하지 /

RewriteRule ^api/(call1|call2|call3)/?$ http://www.example.com/api/rest_services.php?_call=$1 [L] 
2

나는 질문에 대한 .htaccess 대답 자격이 아니지만, 이것은 내가 오히려 어쨌든 그것을 할 거라고 방법입니다 :

<?php 

if ($_SERVER['REQUEST_METHOD'] !== 'POST') { 
    die('some meaningful REST style error here'); 
} 
+0

예. 오류 메시지가 있으면 사용자의 행복과 신비화가 줄어 듭니다. –

+0

감사합니다. 그러나 RewriteRule 솔루션을 뒷받침하는 다른 요소가 있습니다. 게다가 그것은 지금 사명입니다. –

8

그냥 POST없는 요청에 맞게 상태 반전해야

RewriteCond %{REQUEST_METHOD} !=POST 
RewriteRule ^api/(call1|call2|call3)/?/ - [L,R=405] 

을 그리고 당신은 또한 클라이언트를 말할 405 status code 보내야합니다 이유. 그러나 R=405 플래그는 Apache 2 이후에만 사용할 수 있습니다. Apache 1의 경우 해당 상태 코드로 응답하는 PHP 스크립트에 요청을 보낼 수 있습니다. <Location>와 함께

0

사용이 :

관련 문제