所以我在上一个问题中找到了一个单一的入口点:How to include config.php efficiently?
我们都知道404错误是什么,因此不需要解释。但是,在使用单个入口点index.php?page=pokemon
时,在尝试访问不存在的页面时,它不会转到404页面。那么我怎样才能解决这个问题,这会使访问者更加用户友好,并将访问者引导到我的404页面,这样他们就不会看到所有的PHP错误了?
答案 0 :(得分:2)
您应该输出自己的错误页面(例如,您只能include()
.html文件),并使用header()
函数设置HTTP状态代码:
header("HTTP/1.0 404 Not Found");
当然,您必须在包含错误模板之前设置标题。
答案 1 :(得分:1)
我假设你在变量$ page上做了一个if / elseif或一个开关,以确定要显示的页面,对吧?
如果是这样,只需添加一个ELSE分配。 default:分支,它将显示自定义错误注释 如果意外值作为$ page传递给用户。
HTH
答案 2 :(得分:0)
如果你实际使用user187291’s code,请改变它:
$page = "home";
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$file = "$page.php";
if (preg_match('/\W/', $file) || !is_file($file)) {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
// print error message
exit;
} else {
include $file;
}
但是,由于您使用的是header
,因此您需要确保没有输出已发送到客户端。否则,HTTP标头已经发送,您无法修改它。您可以使用output control functions缓冲任何输出,并在出现错误时将其丢弃。