如何解决如何使用前缀创建子路由但可以在 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()));
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。