gpt4 book ai didi

redirect - 语言重定向与否

转载 作者:行者123 更新时间:2023-12-04 14:43:06 26 4
gpt4 key购买 nike

我有一个有多种语言的网站。现在的设置方式是查看 http 接受语言并将用户重定向到特定语言,或者在未找到语言时使用默认语言。

我面临的问题是网络爬虫无法索引根页面,因为它提供了 302 重定向。 http://www.mydomain.com被重定向到 http://www.mydomain.com/nl/

网站可以被索引的唯一方法是我提供整个网站的站点地图,包括语言。我已经这样做了,但我已经好几个星期没有看到任何索引页面了。

所以我的问题是:让网站以默认语言运行是否更好。

要使用您自己的语言访问网站,您必须在访问根网站时选择语言。

最佳答案

The problem that I am facing is that web crawlers can't index the root page

我以前没见过这个问题。网络爬虫肯定会遵循 302 重定向。您是否有可能(无意中)阻止没有 Accept-Language header 的访问者,例如网络爬虫?

So my question is: Will it be better to just have the website work in a default language. To have the website in your own language you have to select the language when you are in the root website itself.

我更喜欢 Accept-Language header 并显示与 header 中指定语言最匹配的语言,根据 HTTP 1.1 Specification .如果未指定,我会将英语显示为默认语言,或者至少显示在(预期)网站受众中覆盖面最大的语言。


我在你的问题历史记录中看到你是一名 PHP 开发人员,所以这里有一个有用的片段,可以根据 HTTP 1.1 规范根据 Accept-Language header 确定最接近的匹配:

function get_language($available_languages, $preferred_language = 'auto') {
preg_match_all('/([[:alpha:]]{1,8})(-([[:alpha:]|-]{1,8}))?(\s*;\s*q\s*=\s*(1\.0{0,3}|0\.\d{0,3}))?\s*(,|$)/i',
$preferred_language == 'auto' ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : $preferred_language, $languages, PREG_SET_ORDER);

$preferred_language = $available_languages[0]; // Set default for the case no match is found.
$best_qvalue = 0;

foreach ($languages as $language_items) {
$language_prefix = strtolower($language_items[1]);
$language = $language_prefix . (!empty($language_items[3]) ? '-' . strtolower($language_items[3]) : '');
$qvalue = !empty($language_items[5]) ? floatval($language_items[5]) : 1.0;

if (in_array($language, $available_languages) && ($qvalue > $best_qvalue)) {
$preferred_language = $language;
$best_qvalue = $qvalue;
} else if (in_array($language_prefix, $available_languages) && (($qvalue*0.9) > $best_qvalue)) {
$preferred_language = $language_prefix;
$best_qvalue = $qvalue * 0.9;
}
}

return $preferred_language;
}

(以上实际上是对在 php.net 某处找到的示例的重写/微调)

可以按如下方式使用:

$available_languages = array(
'en' => 'English',
'de' => 'Deutsch',
'nl' => 'Nederlands'
);

$requested_language = get_it_somehow_from_URL() ?: 'auto';
$current_language = get_language(array_keys($languages), $requested_language);

if ($requested_language != $current_language) {
// Unknown language.
header('Location: /' . $current_language . '/' . $requested_page);
exit;
}

关于redirect - 语言重定向与否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com