모든 URL에 위치를 추가해야합니다.laravel에서 세그먼트의 수가 여러 개인 경우 RouteGroup에서 미들웨어가 실행되지 않음
protected function mapWebRoutes()
{
$locale = Request::segment(1);
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
'prefix' => $locale
], function ($router) {
require base_path('routes/web.php');
});
}
그러나 세그먼트의 수는 하나 이상있는 경우, 미들웨어가 실행되지 않습니다 :이 같은 "RouteServiceProvider.php"에서 "mapWebRoutes"를 사용했다. 예를 들어 위치가 아래 주소에 올바르게 추가되었습니다. 미들웨어 =>http://example.com/en/test
하지만 위치로부터 복귀 후
http://example.com/test
아래 주소에 추가되지 않는다 :
http://example.com/test1/test2
이 미들웨어가 실행되지 않았 음을 의미한다. 미들웨어의 첫 번째 행에 echo 'test'; exit();
을 추가하여 미들웨어가 실행 중인지 확인합니다. 그러나 세그먼트의 수가 하나 이상인 경우 미들웨어가 실행되지 않습니다.
내 미들웨어 코드입니다 : 내가 코드를 아래에 mapWebRoutes()를 변경하고 문제가 sloved
public function handle($request, Closure $next)
{
if (!array_key_exists($request->segment(1), config('translatable.locales'))) {
// Store segments in array
$segments = $request->segments();
// Set the default language code as the first segment
$segments = array_prepend($segments, config('app.fallback_locale'));
// Redirect to the correct url
return redirect()->to(implode('/', $segments));
}
return $next($request);
}