codeigniter 4最简单的静态页面教程给出404

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

使用:CodeIgniter v4.4.4

在 Linux 上:Apache2 和 PHP 8.1.2

codeigniter 4 user_guide 中的本教程

我完全按照教程进行操作。

当我导航到本地主机时,我可以看到代码点火器“开发者模式”

但是当我执行 localhost/about 时,我得到了 404

它与 http://localhost:8080/about 一起使用

// 这是一些文件详细信息;

在 /app/config/app 中我更改了 base_url: 公共字符串 $baseURL = 'http://localhost/public/'; # 没有公开相同的结果

// 这是我的“routes.php”文件,与教程中的完全一样

<?php

use CodeIgniter\Router\RouteCollection;
use App\Controllers\Pages;

/**
 * @var RouteCollection $routes
 * ref: https://codeigniter.com/user_guide/tutorial/static_pages.html#
 * 
 */
$routes->get('/', 'Home::index');
$routes->get('pages', [Pages::class, 'index']);
$routes->get('(:segment)', [Pages::class, 'view']);

// 关于页面就像他们在教程中想要的那样

Views
├── pages
│   └── about.php
├── templates
│   ├── footer.php
│   └── header.php
└── welcome_message.php

// 最后是 /app/Controllers/Pages.php 中的 Pages.php 控制器文件

<?php

namespace App\Controllers;

use CodeIgniter\Exceptions\PageNotFoundException;

class Pages extends BaseController
{
    public function index(): string
    {
        return view('welcome_message');
    }

    public function view($page = 'home')
    {
        if (! is_file(APPPATH . 'Views/pages/' . $page . '.php')) {
            // Whoops, we don't have a page for that!
            throw new PageNotFoundException($page);
        }

        $data['title'] = ucfirst($page); // Capitalize the first letter

        return view('templates/header', $data)
            . view('pages/' . $page)
            . view('templates/footer');
    }
}

我在这里缺少什么?我在版本 3 中可以正常工作。 我让它在另一个项目的版本 4 中工作。 我就是不明白为什么?它实际上是从教程中复制粘贴的。

codeigniter apache2 lamp codeigniter-4
1个回答
0
投票

已解决:

转到/etc/apache2/sites-available (sudo cp 000-default.conf backup_000-default.conf)

//修改如下:

    DocumentRoot /var/www/html/public
    <Directory /var/www/html/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

sudo 服务 apache2 重新启动

然后使用“F5”刷新页面或在浏览器中刷新 bttn

© www.soinside.com 2019 - 2024. All rights reserved.