Php Laravel Multi-Lang网站重定向到机器人程序的服务器错误500
我创建了一个Laravel应用程序,它是英语和德语的多语言应用程序 所以我有'my domain.com/en'和'my domain.com/de' 如果没有设置语言段,并且有人直接访问my-domain.com,我将检测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 所以我过去常常看到机器人访问我的站点时
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()
检查一下,一切正常。非常感谢!