如果控制器或方法不存在,则将URL重定向到404页面

时间:2019-06-06 19:37:17

标签: php url-routing

如果URL包含不存在的Controller和Method,我想将用户重定向到404页面

<?php

define('WEBROOT',str_replace('index.php','',$_SERVER['SCRIPT_NAME']));
//echo (WEBROOT .'<br/>');
define('ROOT',str_replace('index.php','',$_SERVER['SCRIPT_FILENAME']));
//echo (ROOT .'<br/>');

require_once(ROOT."core/Controller.php");

$url = $_GET["p"];
$urlArray = array();

$urlArray = explode("/", $url);

$controller = !empty($urlArray[0]) ? $urlArray[0] : "Home";
$methodOrAction = !empty($urlArray[1]) ? $urlArray[1] : "index";

echo $controller ."<br/>";
echo $methodOrAction ."<br/>";


if (file_exists("controllers/".$controller.".php") && method_exists($controller,$methodOrAction)){

    require_once("controllers/".$controller.".php"); 

    $controller = new $controller();

    $controller->$methodOrAction(); 

}else{

    // echo '404 : This file or method is not exist !';

    require_once("controllers/ErrorMsg.php");

    $ErrorMsg = new ErrorMsg();

    $ErrorMsg->DisplayError();

}

1 个答案:

答案 0 :(得分:1)

将某人重定向到默认404页面不是用户友好的。相反,您可以创建一个错误页面,并通过以下方式将用户重定向到该页面:

Header("Location: /404.html");

这会将访问者重定向到www.yourwebsite.com/404.html。您可以根据需要以任何方式自定义链接。