Сайт Laravel Multi Lang перенаправляет на сервер 500 Ошибка для ботов - PullRequest
1 голос
/ 13 октября 2019

Я создал приложение Laravel на нескольких языках на английском и немецком языках.

Итак, у меня есть «my-domain.com/en» и «my-domain.com/de», если ни один языковой сегмент не былустановить, и кто-то непосредственно посещает my-domain.com. Я обнаружу HTTP_ACCEPT_LANGUAGE и установлю его, если он находится в моих предопределенных локалях.

Мой язык возврата - немецкий. Для обычных пользователей он отлично работает, но большинство веб-инструментов SEO для анализа моего веб-сайта выдает ошибку, когда я набираю «my-domain.com», и они возвращают ошибку 500

, поэтому я использовал http://redirectcheck.com/ чтобы узнать, что происходит, когда бот заходит на мой сайт, и он также возвращает: HTTP/2 500

Промежуточное программное обеспечение Language.php Код:


    public function handle($request, Closure $next)
    {
        //All predefined Languages [Array]
        $locales = config('app.locales');

        // Check if the first segment matches a language code
        if (!array_key_exists($request->segment(1), $locales)) {

            //Detect Browser Lang
            $detectedLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

            // Store segments in array
            $segments = $request->segments();

            if(array_key_exists($detectedLang, $locales)) {
                $segments = Arr::prepend($segments, $detectedLang);
            }else {
                $segments = Arr::prepend($segments, config('app.fallback_locale'));
            }
            // Redirect to the correct url
            return redirect()->to(implode('/', $segments));
        }
        // The request already contains the language code
        return $next($request);
    }
...