Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel Multi-Lang网站重定向到机器人程序的服务器错误500_Php_Laravel_Http Status Code 500 - Fatal编程技术网

Php Laravel Multi-Lang网站重定向到机器人程序的服务器错误500

Php Laravel Multi-Lang网站重定向到机器人程序的服务器错误500,php,laravel,http-status-code-500,Php,Laravel,Http Status Code 500,我创建了一个Laravel应用程序,它是英语和德语的多语言应用程序 所以我有'my domain.com/en'和'my domain.com/de' 如果没有设置语言段,并且有人直接访问my-domain.com,我将检测HTTP\u ACCEPT\u语言,并设置它是否在我预定义的地区 我的后备语言是德语。 对于普通用户来说,它工作得很好,但是当我输入'my domain.com'时,用于分析我的网站的大多数页面SEO工具都会抛出错误,并且返回错误500 所以我过去常常看到机器人访问我的站点时

我创建了一个Laravel应用程序,它是英语和德语的多语言应用程序

所以我有'my domain.com/en'和'my domain.com/de' 如果没有设置语言段,并且有人直接访问my-domain.com,我将检测
HTTP\u ACCEPT\u语言
,并设置它是否在我预定义的地区

我的后备语言是德语。 对于普通用户来说,它工作得很好,但是当我输入'my domain.com'时,用于分析我的网站的大多数页面SEO工具都会抛出错误,并且返回错误500

所以我过去常常看到机器人访问我的站点时会发生什么,它也会返回:
HTTP/2500

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);
    }

如果请求没有
HTTP\u ACCEPT\u LANGUAGE
头怎么办?当我用
if替换第二个if语句时(isset($\u SERVER['HTTP\u ACCEPT\u LANGUAGE'])和&array\u key\u exists($detectedLang,$locales)){
我将得到相同的错误500查看您的服务器日志,您在说什么?如果由于您的帮助最终修复了它!问题是
HTTP\u ACCEPT\u语言
不存在。我设置了包含
HTTP\u ACCEPT\u语言
头的变量,但该头不存在。我添加了
isset()
还有前面的
isset()
检查,一切都正常工作。非常感谢!如果请求没有
HTTP\u ACCEPT\u LANGUAGE
头怎么办?当我用
if替换第二个if语句时(isset($\u SERVER['HTTP\u ACCEPT\u LANGUAGE')和&array\u key\u exists($detectedLang,$locales)){
我将得到相同的错误500查看您的服务器日志,您在说什么?如果由于您的帮助最终修复了它!问题是
HTTP\u ACCEPT\u语言
不存在。我设置了包含
HTTP\u ACCEPT\u语言
头的变量,但该头不存在。我添加了
isset()
这里和前面的
isset()
检查一下,一切正常。非常感谢!