我在htaccess中有一个内容
Options FollowSymLinks
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule .* index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
如何添加启用PUT方法? 感谢
答案 0 :(得分:2)
以下是可能适合您的解决方案
首先,一个实用程序文件支持HTTP摘要认证,其中 可以位于目标目录(或常见的PHP包含 目录,如果你可以设置一个):dowload and rename dauth.php
其次,在相关目录中,放置以下PHP脚本: download and rename put.php
第三,将以下.htaccess文件存储在目标目录中, 用域相对路径替换'/ path-to-target-directory' (例如,如果可以在http://mydomain/x/y/z.html读取目标文件, 那么/ path-to-target-directory将是'/ x / y'):download and rename .htaccess
.htaccess
示例:
Options FollowSymLinks
RewriteEngine on
RewriteBase /path-to-target-directory
RewriteCond %{REQUEST_METHOD} !PUT
RewriteRule ^/put\.php$ - [F]
RewriteCond %{REQUEST_METHOD} PUT
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/put\.php$ - [F]
RewriteCond %{REQUEST_METHOD} PUT
RewriteRule ^(.*)$ put.php?url=$1 [L]
有关详细信息,请参阅:Here
答案 1 :(得分:0)
约定讨论传输要使用的基础方法的X-HTTP-METHOD-OVERRIDE
标头(在POST请求中)。
您可以在php应用程序中获取此请求标头,以定义您是否处理PUT请求。
答案 2 :(得分:0)
使用apache“启用”PUT请求无需任何操作。
如果你的意思是你没有收到通过PUT请求发送的数据 - 你需要在你的代码中使用这样的PHP代码:
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
$data = file_get_contents('php://input');
}
因为PUT请求不会填充$_POST
(显然,因为它不是POST请求)。