如何检测 PHP 脚本被用作 404 Not Found 的 ErrorDocument?
How to detect PHP script is being used as ErrorDocument for 404 Not Found?
假设我有一个 test.php 文件,配置为使用 ErrorDocument 404 /test.php
处理 Apache 404 错误
我必须添加什么 PHP 代码来检查我们是否真的在处理 404,并且 test.php 没有被直接调用?
喜欢:
<?php
if (server_response_code == 404) {
echo "It's a 404!"
}
?>
P.S。没有404转发等等……
一种方法是简单地查看 $_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
:)
假设我有一个 test.php 文件,配置为使用 ErrorDocument 404 /test.php
我必须添加什么 PHP 代码来检查我们是否真的在处理 404,并且 test.php 没有被直接调用?
喜欢:
<?php
if (server_response_code == 404) {
echo "It's a 404!"
}
?>
P.S。没有404转发等等……
一种方法是简单地查看 $_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
:)