php - 如何设置 404 页面的路由?
问题描述
通过互联网上的一些教程,我用 php 创建了一个简单的路由器。代码工作正常,但如果文件不存在,我尝试路由 404 页面。我的代码如下
索引文件 (php)
include 'router.php';
$request = $_SERVER['REQUEST_URI'];
$router = new router($request);
$router->get('/','app/home');
$router->get('post','app/post');
$router->get('hello','app/hello');
路由器文件 (php)
class router
{
private $request;
public function __construct($request)
{
$this->request = $request;
}
public function get($route, $file)
{
$uri = trim($this->request, "/");
$uri = explode("/", $uri);
if($uri[1] == trim($route, "/")) {
array_shift($uri);
$args = $uri;
if(file_exists($file . '.php')) {
require_once $file .'.php';
} else {
require_once '404.php';
}
}
}
}
该代码不显示 404 页面,而只显示存在的文件。请问有人可以帮我吗?
解决方案
首先,您的代码似乎容易受到“文件包含”的影响。见https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion
其次,它应该可以正常工作,我的水晶球告诉我,404.php
文件由于某种原因不可读(它不存在或存在权限问题)。要查看发生了什么 - 启用错误报告,即把它放在你的 php.ini 文件中:
error_reporting = -1
display_errors = On
或者在你的应用程序/脚本的开头添加这个:
ini_set('display_errors', 1);
error_reporting(-1);