我正在使用laravel 5..7,并且在多语言网站上遇到了一些麻烦...我出于seo目的使用了全局路由前缀。 (将lang参数,例如en,tr添加到url)
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
'prefix' => in_array(Request::segment(1), $this->noLangPrefix) ? "" : Request::segment(1)
]...
i
t在下面的语言中间件上确实可以很好地工作。.
public function handle($request, Closure $next)
{
$langSegment = $request->segment(1);
// go ahead if is admin panel or sitemap
if ($langSegment == "admin")
return $next($request);
if ($langSegment == "sitemap.xml")
return $next($request);
// if is homepage
if (is_null($langSegment)) {
app()->setLocale($request->getPreferredLanguage((config("app.locales"))));
return $next($request);
}
if (strlen($langSegment) == 2)
return $next($request);
return redirect(url(config("app.locale") . "/" . implode($request->segments())));
}
当我说“ app.test / blog”时,它会将我重定向到“ app.test / tr / blog”
但是,如果我说“ app.test / blog / sample-blog-spot”,它将给我Symfony\Component\HttpKernel\Exception\NotFoundHttpException
为什么我会收到此错误?因为它无法通过路线或其他路线,该如何解决?