为 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');
您可以使用正则表达式约束轻松约束路由参数的格式:
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
我有几个具有不同 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');
您可以使用正则表达式约束轻松约束路由参数的格式:
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