突然间,我在 Laravel 8 returns 中的 Auth 中间件内的 /admin 路由找不到 404

Out of a sudden my /admin route inside the Auth Middleware in Laravel 8 returns a 404 not found

我最近开始在 Laravel 中编写自己的管理面板。 每条路由都正常工作,但突然之间 Auth 中间件组中的 /admin 路由停止正常工作。

This are my routes inside web.php

My php artisan route:list

EntryController@index 看起来像这样:

public function index()
{
    //
    $entries = Entry::all();
    return view('admin.index', ['entries' => $entries]);
}

这个问题已经困扰我大约 2 年了,所以也许你们中有人知道解决方案。

我认为您遇到此问题是因为 Laravel 如何确定其路线的优先级。

而且我认为罪魁祸首可能是这条路线:

Route::get('/{link}', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

当您使用 {link} 时,您基本上是在说:“期待 URI 的这一部分中的任何内容”。由于 /{link} 路由位于 /admin 路由之前,并且它们的 URI 都只包含一个段,因此 Laravel 将首先尝试解析 /{link}

解决方法:将/{link}路线移到/admin路线下方即可。最好将它放在列表的底部 :D