假设我有一个 test.php 文件,配置为处理 Apache 404 错误ErrorDocument 404 /test.php
我必须添加什么 PHP 代码来检查我们是否真的在处理 404,并且 test.php 没有被直接调用?
喜欢:
<?php
if (server_response_code == 404) {
echo "It's a 404!"
}
?>
PS 没有 404 转发左右……</p>
假设我有一个 test.php 文件,配置为处理 Apache 404 错误ErrorDocument 404 /test.php
我必须添加什么 PHP 代码来检查我们是否真的在处理 404,并且 test.php 没有被直接调用?
喜欢:
<?php
if (server_response_code == 404) {
echo "It's a 404!"
}
?>
PS 没有 404 转发左右……</p>
一种方法是简单地查看$_SERVER['REQUEST_URI']
并确定它是否指向无效的东西。
虽然您的示例可能针对此问题进行了简化,但它可能很简单
if ($_SERVER['REQUEST_URI'] != 'test.php') {
//we are handling a 404
header("HTTP/1.0 404 Not Found");
echo "These aren't the droids you're looking for";
}
您可能需要更复杂的逻辑,但都归结为查看请求并检测到它是无效的。
只要 ErrorDocument 是一个相对 URL(不以http://.. . 开头),那么您应该会发现您的脚本有一些额外的 $_SERVER 变量,例如
$_SERVER["REDIRECT_URL"]; // /original/path
$_SERVER['REDIRECT_STATUS']; // 404
有关更多详细信息,请参阅ErrorDocument文档。
或者,只需将查询字符串 arg 传递给 404 处理程序,例如ErrorDocument 404 /test.php?error=404
:)