You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST API无index.php时无法获取POST数据,求排查.htaccess配置

问题排查与解决方案

问题出在你的RewriteRule规则写法上:当POST请求被重写到带查询字符串的URL时,Apache默认会将POST请求转换为GET请求,导致POST数据丢失。直接访问/avi/index.php时没有经过重写,POST方法被保留,所以能正常获取数据。

以下是两种修复方案:

方案一:使用PATH_INFO传递路径

修改.htaccess规则,去掉查询字符串,改用PATH_INFO传递路径:

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

重写后请求会变为/index.php/avi,你可以在index.php中通过$_SERVER['PATH_INFO']获取路径信息,同时POST数据会被完整保留。

方案二:添加PT标志保留POST方法

如果需要保留原有的查询字符串传递方式,在RewriteRule中添加PT(Pass Through)标志,确保Apache保留原始请求方法:

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

PT标志会让Apache将重写后的URL当作新请求继续处理,不会转换POST方法,从而保留POST数据。

另外,确认index.php中是通过$_POST全局变量获取POST数据,而非依赖其他可能受重写影响的方式。

内容的提问来源于stack exchange,提问作者Avijit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:55:18