使用: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 中工作。 我就是不明白为什么?它实际上是从教程中复制粘贴的。
已解决:
转到/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