在 Laravel 中为 /about-us 返回 404 NOT FOUND 的路线。怎么解决?

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

PHP 版本 - 8.2.4 拉拉维尔 10

我的 Laravel 应用程序中的其中一条路线遇到问题。我已经为“/about-us”URL 定义了一条路由,但每当我尝试访问它时,都会收到 404 NOT FOUND 错误。我花了一些时间调试它,但我似乎无法找出导致问题的原因。

这是我的 web.php 文件中的路由代码:

Route::get('/about-us', [SiteController::class, 'about'])->name('about-us');

这是 SiteController 中相应的方法:

<?php

namespace App\Http\Controllers;

use App\Models\TextWidget;
use Illuminate\Http\Request;
use Illuminate\View\View;

class SiteController extends Controller
{
    public function about(): View
    {
        $widget = TextWidget::query()
            ->where('key', '=', 'about-page')
            ->where('active', '=', 1)
            ->first();

        return view('about', compact('widget'));
    }
}

所有其他路线均按预期运行。

我也检查了数据库,在'TextWidget'表中有一条键'about-page'和'active'设置为1的记录。

提前感谢您的时间和帮助!

标签:laravel、laravel-路由

我还清除了路由缓存并进行了检查。 重新启动开发服务器但不起作用。

laravel laravel-routing
3个回答
0
投票

当然,这是检查和清除 Laravel 路由缓存的步骤的精简版本:

1。检查路由缓存: 导航到 bootstrap/cache 并检查名为 paths.php 的文件以查看您的路由是否已缓存。

2。清除路由缓存: 在项目的根目录中,运行:

php artisan route:clear

要清除其他缓存,请使用:

php artisan cache:clear

清除缓存后,测试一下你


-1
投票

要解决该问题,请按以下步骤操作:

1- 定义路由时不需要使用/开头,路由名称应该这样写:

Route::get('about-us', [SiteController::class, 'about'])->name('about.us');

Route::get('about-us', [SiteController::class, 'about'])->name('aboutus');

2- 然后在终端中输入以下命令以确保 Laravel 中定义了路由。此命令将显示 Laravel 中定义的所有路由的列表:

php artisan route:list

如果您在列表中看到您的路线,则表示您的路线已定义 在 Laravel 中。

3- 在终端中输入以下命令,确保清除所有缓存:

php artisan optimize:clear

4- 现在呼叫您的路线。如果再次遇到 404 错误,请按照以下步骤操作:

将您在 web.php 文件中创建的路由移动到 已定义路线列表的开头或末尾并重复 再次执行第 3 步。

祝你好运


-2
投票

可能您必须检查视图名称是否为“about”,以及视图“about”是否位于视图文件夹中的另一个文件夹中。请记住,如果您在同一条路线上使用相同的调用方法,您也可能会遇到问题。也许你可以尝试避免写“public function about(): View”而写成“public function about(){}”。

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