为什么我的路由器导致无法读取CSS?

问题描述 投票:0回答:1

我从头开始创建了一个路由器。这是一个简单的路由器:

class Router {
    private static array $routes;

    public static function register($route = '/', $filename=''){
        self::$routes[$route] = $filename;
    }

    public static function run(string $URI){
        $route = explode('?', $URI)[0];
        $play = self::$routes[$route];

        if($play){
            try{
                var_dump($play);
                require_once $play;
            } catch(Error $e){
                echo "<h1>Can't find the file </h1> <p>" . $e -> getMessage() . "</p>";
            }
            
        }else{
            echo "<h1>Page not found 404</h1>";
        }
    }
}

主页index.php使用页眉和页脚作为外部文件。在中间,我们可以调用路由器,它就可以工作了。逻辑很清楚:

require_once dirname(__DIR__) . '/config/Router.php';
/**
 * Registration of routers =======================+
 */
Router::register('/', './index.php');
Router::register('/associations', dirname(__DIR__) . '/views/associations/index.php');
Router::register('/associations/add', dirname(__DIR__) . '/views/associations/add.php');
Router::register('/partnerships', dirname(__DIR__) . '/views/partnerships/index.php');
Router::register('/test/t', dirname(__DIR__) . '/views/associations/test.php');
/**
 * Definitions of variables ======================+
 */
$title = 'List of associations';
$page_title = 'Organize your partnerships in ***';
/**
 * Requiring the header for every page ===========+
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '/views/layouts/header.php';
/**
 * 
 */
var_dump($_SERVER['REQUEST_URI']);
Router::run($_SERVER['REQUEST_URI']);

/**
 * Requiring the header for every page ===========+
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'views/layouts/footer.php';

对于只有一个斜杠的页面,它工作得很好。但是对于 /associations/add 这样的页面,页面可以正确上传,但无法读取 CSS。

注意:我没有使用composer,也没有制作自动加载器!

我尝试更改 CSS 文件的路径,但这会影响其他文件,因为它们都有相同的标头。这不是问题所在。我确信路由是问题所在。但我该如何解决这个问题呢?任何帮助将不胜感激!

php routes uri router
1个回答
0
投票

你能给出 html 模板的例子吗?

我猜,你使用了相对路径:

<link rel="stylesheet" type="style.css">

当需要使用绝对路径时:

<link rel="stylesheet" type="text/css" href="/style.css">
© www.soinside.com 2019 - 2024. All rights reserved.