首页 > 解决方案 > 为什么我在路由时必须通过 index.php

问题描述

我正在学习php中的路由。我遇到了这个问题,我不知道如何解决它。这是我的 index.php 文件。

<?php
$database = require "Core/bootstrap.php";
$router = new Router;
require "routes.php";
require $router->direct('contact');

我的路线:

<?php
$router->define([
    '' => 'Controller/index.php',
    'about' => 'Controller/about.php',
    'about/culture' => 'Controller/about-culture.php',
    'contact' => 'Controller/contact.php'

]);

最后是路由器类:

<?php
class Router {
    protected $routes = [];
    public function define($routes){
        $this->routes = $routes;
    }
    public function direct($uri){
        if(array_key_exists($uri, $this->routes)){
            return $this->routes[$uri];
        }}}

在上面的示例中,我将“联系人”作为我的预定义路线。我打开“本地主机”,它会将我带到“联系人”页面,但如果我写“本地主机/联系人”,我会得到“404 未找到”。如果我去通过 'localhost/index.php/contact' 一切正常。其他路由也一样。我知道这里的问题是(我可能是错的)绝对和相对路径。我使用的是 Fedora 28,我搜索了 .htaccess 但我不明白该怎么做。我将不胜感激,而不仅仅是一个答案。

标签: php.htaccesspathroutingfedora

解决方案


推荐阅读