如何制作带前缀的子路由但可以在 Laravel 中不带前缀工作?
How to make sub-routes with prefix but can work without prefix in Laravel?
我正在使用 Laravel 构建一个多语言网站,但我遇到了有关区域设置的问题。
我现在有 2 种语言 (Ar/En),我的路线接受前缀来确定语言。
我希望我的路由在没有前缀的情况下有效并设置默认区域设置。
我当前的代码是:
Route::group([
'prefix' => '/{locale?}',
'where' => ['locale' => '^(ar|en)$'],
'middleware' => ['setLocale']
], function(){
Route::get('/', function () {
return view('home');
});
Route::get('test', function (){
return 'test';
});
});
它适用于第一条路线,但对于任何子路线,如果没有提供前缀,它就不起作用!
你可以定义一个fallback route
Route::fallback(function () {
abort_if(in_array(request()->segment(1), ['ar', 'en']), 404);
return redirect()->to(url(app()->getLocale().request()->getPathInfo()));
});
我正在使用 Laravel 构建一个多语言网站,但我遇到了有关区域设置的问题。
我现在有 2 种语言 (Ar/En),我的路线接受前缀来确定语言。
我希望我的路由在没有前缀的情况下有效并设置默认区域设置。
我当前的代码是:
Route::group([
'prefix' => '/{locale?}',
'where' => ['locale' => '^(ar|en)$'],
'middleware' => ['setLocale']
], function(){
Route::get('/', function () {
return view('home');
});
Route::get('test', function (){
return 'test';
});
});
它适用于第一条路线,但对于任何子路线,如果没有提供前缀,它就不起作用!
你可以定义一个fallback route
Route::fallback(function () {
abort_if(in_array(request()->segment(1), ['ar', 'en']), 404);
return redirect()->to(url(app()->getLocale().request()->getPathInfo()));
});