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

PHP Web Service带与不带尾部斜杠访问数据接收异常如何解决

问题根因

你遇到的现象是Apache的mod_dir模块默认机制导致的:当访问路径对应存在的目录且未携带尾部斜杠时,Apache默认会返回301重定向到带尾部斜杠的同路径,重定向过程中POST请求会被自动转为GET请求,请求体JSON payload会直接丢失,因此php://input读取为空,返回无数据的提示。

可行解决方案

下面提供两种符合你要求的实现方案,二选一即可:

方案1:在/api/check/目录下添加.htaccess文件(推荐,无需修改业务代码)

选择以下任意一种配置规则写入.htaccess即可:

配置方式A:关闭目录自动补斜杠重定向,内部重写请求

直接取消目录自动补斜杠的外部重定向逻辑,所有请求内部映射到index.php处理,不会丢失请求体:

<IfModule mod_dir.c>
    DirectorySlash Off
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^check$ index.php [L]
</IfModule>

配置方式B:用307重定向保留请求信息

如果需要保留补斜杠的路径规范,可使用307重定向(307状态码会要求客户端保留原请求方法和请求体重新发起请求,主流HTTP客户端均支持该特性):

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteRule ^api/check$ /api/check/ [R=307,L]
</IfModule>

方案2:修改文件适配(仅在无法修改.htaccess时使用)

如果服务器不允许自定义.htaccess规则,可在/api/目录下新建check.php文件,将你编写的业务代码完整复制到该文件中,同时保留/api/check/index.php的原有代码即可。这样不带斜杠的/api/check请求会直接匹配到api目录下的check.php文件,不会触发重定向丢失数据。


内容的提问来源于stack exchange,提问作者Giuseppe Lodi Rizzini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:06:00