Php .htaccess mod_rewrite在请求URI不存在时删除POST数据';t以正斜杠结束
我知道这已经被问过无数次了,但我一辈子都搞不明白为什么会发生这种事。我已经构建了一个返回JSON字符串的非常基本的API,但是如果端点没有以正斜杠结束,那么所有POST数据都将丢失。我的Php .htaccess mod_rewrite在请求URI不存在时删除POST数据';t以正斜杠结束,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我知道这已经被问过无数次了,但我一辈子都搞不明白为什么会发生这种事。我已经构建了一个返回JSON字符串的非常基本的API,但是如果端点没有以正斜杠结束,那么所有POST数据都将丢失。我的.htaccess文件如下: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Rewrit
.htaccess
文件如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule . api-main.php [L]
</IfModule>
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则[E=HTTP_授权:%{HTTP:AUTHORIZATION}]
重写规则。api-main.php[L]
所以当我请求http://example.com/api/endpoint/
POST数据被保留,但当我访问http://example.com/api/endpoint
POST数据丢失
编辑:API的工作方式是查找名为的文件夹,因此真正的请求是试图查找
/API/endpoint/post.php
,这意味着名为endpoint
的文件夹实际上存在。我在尝试访问一个不存在的端点并转储$\u POST
参数时确认了这一点,该操作正常。。这是apache的限制吗?请尝试关闭多视图。把这个放在.htaccess的顶部<代码>选项-多视图我添加了此选项,但似乎不起作用D:我当前的解决方法是将文件夹名称前缀为\u
,然后将其添加到请求中。i、 e./api/test/this/
神奇地寻找/api/\u test/\u this/
这是一种黑客攻击,但至少它是有效的。这可能是apache配置中设置的限制