管理404错误

时间:2018-08-02 09:12:42

标签: php model-view-controller http-status-code-404

我正在制作没有框架的MVC网站。您可以帮我在类自动加载中编写代码,以便在类不存在时重定向到404错误页面(已经存在)。

http://cedricjager.com/stream/index.php?p=non_existant_class => 404页

class Autoload {

static function register() {
spl_autoload_register (['Autoload', 'myAutoload']);
}

static function myAutoload($class_name) {
$class = ucfirst($class_name);
require 'Models/' . $class . '.php';
}
}

class Router {.....
    elseif ($p === '404') {
  $this->controller->error();
}

谢谢

3 个答案:

答案 0 :(得分:2)

  1. 制作自己的自定义404页面
  2. Make an .htaccess文件并将其放在您的根目录中
  3. 将此行放置在.htaccess文件ErrorDocument 404 {您的网站链接} /your-custom-404.php中

答案 1 :(得分:0)

最简单的选择是使用file_exists,即

if(file_exists('Models/' . $class . '.php')) {
  require 'Models/' . $class . '.php';
} else {
  header('Location: 404.php');
}

这应该为您解决问题:)

答案 2 :(得分:0)

我希望它的代码可以为您提供帮助

static function myAutoload($class_name)
{
    $class = ucfirst($class_name);
    $file = "Models/{$class}.php";
    try {
        if (!file_exists($file)) {
            throw new Exception('File doesn\'t exists', 404);
        }
        require $file;
    } catch (Exception $e) {
        $message = $e->getMessage(); // File doesn't exists
        $code = $e->getCode(); //404
        // show your 404 error
        // or rewrite to 404 url
    }
}