我正在构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>