我尝试将网站从旧服务器转移到新服务器,但遇到了一个问题。两个服务器上的 PHP/JS 代码相同,但在新服务器上却不起作用 - AJAX 请求中的 $_POST 数据为空。
一些细节:
旧服务器:Debian 7,Nginx + Apache(mod_php 7.4)
新服务器:Ubuntu 22.04,Nginx 1.18.0 + Apache 2.4.52(mod_php 7.4)
请求的地址 /basket/add/。它不存在,.htaccess 包含规则
ErrorDocument 404 /404.php
404.php 包含逻辑 URL 的路由器,它应该读取 $_POST 并将产品添加到购物篮。我var_dump($_POST);
在 404.php 的最开头添加了它,但 $_POST 始终为空数组()。
当相同的请求发送到现有文件(而不是 404.php)时,$_POST 会被正常填充。
因此,问题出在 .htaccess 指令中ErrorDocument 404 /404.php
。旧服务器可以正确查看 404.php 中的 $_POST,但新服务器则不行。
我真的不明白为什么会发生这种情况。有什么想法吗?