多个 Slugs 冲突管理路由

Posted

技术标签:

【中文标题】多个 Slugs 冲突管理路由【英文标题】:Multiple Slugs conflict admin Route 【发布时间】:2021-11-11 13:12:42 【问题描述】:

我有 2 条路线,一条用于管理员和其他帖子,但它们是冲突的,因为在帖子路线中我可能有另一个 slug 是类别。

例子:

Route::get('category?/slug',
    [\App\Http\Controllers\Site\PostController::class, 'show']);

Route::prefix('admin')->group(function () 
    Route::get('/login', 'App\Http\Controllers\Auth\LoginController@showLoginForm')->name('login');...

如何在不向帖子或管理员添加其他前缀的情况下解决它?我在文档中看到我可以使用正则表达式,但没有办法例如忽略“管理员”字或其他东西

【问题讨论】:

如果我没记错(或者至少它以前是如何工作的),路由将按照添加的顺序进行检查,因此请先尝试添加管理路由。 @BenGooding - 我认为他们知道这一点,因为他们特别要求提供不需要添加前缀的解决方案。 啊,我的错,我没有完整阅读它 【参考方案1】:

路由是按顺序编译的,所以只需改变你的路由顺序,它们应该是这样的:


Route::get('admin/login', 'App\Http\Controllers\Auth\LoginController@showLoginForm')->name('login');

Route::get('category?/slug',[\App\Http\Controllers\Site\PostController::class, 'show']);

【讨论】:

以上是关于多个 Slugs 冲突管理路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由和 Vue 路由冲突

Linux网络管理-基础

带有 Str::slug 的 Laravel Slugs

路由,交换机

解决ubuntu双网络冲突问题

怎么用nginx实现路由自动切换