当我请求包含无效查询的页面时,我的 PHP 网站没有返回 404 错误。
例如, 如果我调用 https://somedomain.com/index.php,它会返回状态为 200 的页面。
但是,如果我致电 https://somedomain.com/index.phppppp,我会收到 404。
打电话时出现问题
https://somedomain.com/index.php?q=123 或者 https://somedomain.com/index.php?abcdefg
在这两种情况下,我都会收到 200 状态以及以下内容 https://somedomain.com/index.php.
令人惊讶的是,浏览器控制台中没有任何错误。
所有页面都存在此问题。 我预计会收到 404 状态来触发 404 页面的显示,但服务器在这些情况下不会抛出 404。
我之前遇到过类似的问题,它可能与服务器端 SSL/TLS 配置的更改有关。您可以采取以下几个步骤来排除故障并可能解决问题:
检查 cURL 版本: 确保您使用的 cURL 版本支持最新的 SSL/TLS 协议。您可以使用以下方式检查您的 cURL 版本:
php -i | grep 卷曲
如果是过时的版本,请考虑更新到最新版本。
尝试在 cURL 选项中明确指定 SSL 版本。将以下行添加到您的代码中:
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
某些服务器可能需要特定的密码套件。您可以使用以下方式设置密码:
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'ECDHE-RSA-AES128-GCM-SHA256');
如果您的服务器需要验证,请务必指定 CA 证书捆绑路径:
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/ca-bundle.crt');
检查服务器日志: 查看服务器日志中是否有任何与 SSL/TLS 相关的错误。这可能会提供对该问题的更多见解。
请记住单独测试每个步骤,看看是否可以解决问题。如果问题仍然存在,请提供有关您的服务器环境、cURL 版本以及您最近对系统所做的任何更改的更多详细信息。