PUT请求结果403禁止 – 需要Apache来允许PUT请求

我正在构build一个RESTFUL API,并且需要让Apache接受PUT请求。 每当我把一个URL,我得到一个403 Forbidden错误。

  curl -X PUT api.example.com/api/foo 

我试图添加以下到我的虚拟目录(无济于事):

<Limit GET POST PUT DELETE HEAD OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST PUT DELETE HEAD OPTIONS> Order deny,allow Deny from all </LimitExcept>
<Limit GET POST PUT DELETE HEAD OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST PUT DELETE HEAD OPTIONS> Order deny,allow Deny from all </LimitExcept> 

还有什么其他的configuration设置可能导致这个?

编辑

我正在重写我的URL,所有被重写到index.php如下:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !\. RewriteRule ^(.*)$ /api/index.php/$1 [L,QSA]
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !\. RewriteRule ^(.*)$ /api/index.php/$1 [L,QSA] 

编辑:

把这个添加到你的Apache conf中:

  Script PUT /api/index.php 

这假定你的实际处理脚本被称为index.php ,它位于/api

将此添加到此文件夹中的.htaccess文件中

 <Limit GET POST PUT OPTIONS> Require all granted </Limit> <LimitExcept GET POST PUT OPTIONS> Require all denied </LimitExcept>