为 Laravel 中的路线设置别名

Setting aliases for a route in Laravel

我有几个具有不同 url 的相同页面。我如何为这些别名设置路由? 到目前为止,我只看到以下方法:

Route::get('/alias1', 'HomeController@someAction');
Route::get('/alias1.html', 'HomeController@someAction');
Route::get('/alias1.php', 'HomeController@someAction');
Route::get('/alias4', 'HomeController@someAction');

有没有更漂亮的设置别名的方法?

您的路线:

Route::get('/{slug}', 'HomeController@someAction');

您的控制器功能:

function someAction($slug){
    #yourcode
}

如果函数中的代码相同且与“url”无关,您可以再做一件事

Route::get('/{slug}', 'HomeController@someAction')->name('YourUniqueRouteName');

作为别名工作。

这里有一些参考链接,可以加深理解。

Routing#parameters-regular-expression-constraints

Routing#named-routes(路由命名)

您可以使用命名路由

Route::get('/{slug}', HomeController@someAction)->name('uniqueNameForRoute');

have a look at Laravel naming routes documentation

您可以使用正则表达式约束轻松约束路由参数的格式:

Route::get('{alias}', 'HomeController@someAction')
    ->where('alias', 'alias1|alias1.html|alias1.php|alias4');

public function someAction($alias)
{
    ...
}

只有当路径是您的 4 个别名之一时,路由才会匹配。

Laravel 6.x Docs - Routing - Parameters - Regular Expression Constraints where