Laravel中间件不会使用语言环境代码重定向URL

时间:2019-11-22 12:33:20

标签: php laravel localization laravel-5.8 laravel-middleware

我将laravel 5.8的URL结构从var max0 = GetMaxLengthOfColumnInSlownik(0, slownik); var max1 = GetMaxLengthOfColumnInSlownik(1, slownik); var max2 = GetMaxLengthOfColumnInSlownik(2, slownik); for (int i=0; i<10; i++) { var column1String = slownik[i, 0].Length< max0? AppendSpaces(slownik[i, 0], max0); var column2String = slownik[i, 1].Length< max1? AppendSpaces(slownik[i, 1], max1); var column2String = slownik[i, 2].Length< max2? AppendSpaces(slownik[i, 2], max1); Console.WriteLine(column1String + " \t " + column2String + " \t " + column3String); } 更改为domain.com/about。  我想使用他们的语言代码将所有访问者从旧网址domain.com/[locale]/about重定向到新网址domain.com/about。我的LanguageMiddleware可检测并设置语言环境,但不会重定向到新的网址,而是会进入404页。

当我看到404错误页面时,我的LanguageMiddleware不显示返回domain.com/[locale]/aboutrequest()->segment(1)

如何最准确地将旧网址重定向到新结构?

routes / web.php-用于为所有网址设置区域设置前缀。

request()->path()

LanguageMiddleware.php-使用语言环境重定向新网址后,检测并设置语言

Route::group(['prefix' => app()->getLocale()], function () {
    ...
});

1 个答案:

答案 0 :(得分:1)

您好,请将此中间件添加到app/Http/Kernel.php中。

protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'language' => \App\Http\Middleware\LanguageMiddleware::class, ];

还将中间件添加到您的路由组中,为此显示以下示例:

Route::post('login', 'Api\Auth\ApiLoginController@login')->middleware('language');

有关更多详细信息:How to add locale into url