Redirect 语言是否重定向

Redirect 语言是否重定向,redirect,indexing,multilingual,Redirect,Indexing,Multilingual,我有一个网站,有多种语言。现在的设置方式是,它查看http接受语言并将用户重定向到特定语言,或者在找不到语言时使用默认语言 我面临的问题是,网络爬虫无法索引根页面,因为它提供302重定向。被重定向到 该网站可以被索引的唯一方法是,如果我提供了整个网站的网站地图,包括语言。我已经这么做了,但是我已经好几个星期没有看到任何索引页面了 所以我的问题是:让网站用默认语言工作会更好吗 要使用您自己的语言创建网站,您必须在根网站本身中选择语言 我面临的问题是,网络爬虫无法索引根页面 我以前从未见过这个问题。

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

我面临的问题是,网络爬虫无法索引根页面,因为它提供302重定向。被重定向到

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

所以我的问题是:让网站用默认语言工作会更好吗

要使用您自己的语言创建网站,您必须在根网站本身中选择语言

我面临的问题是,网络爬虫无法索引根页面

我以前从未见过这个问题。Webcrawlers当然遵循302重定向。你有没有可能(毫不留情地)在没有像webcrawlers那样的
接受语言
标题的情况下阻止访问者

所以我的问题是:让网站用默认语言工作会更好吗。要使用您自己的语言创建网站,您必须在根网站本身中选择语言

我更喜欢
接受语言
标题,并根据显示与标题中指定语言最匹配的语言。如果没有指定,我会将英语显示为默认语言,或者至少显示在(预期)网站受众中覆盖率最大的语言


我在您的问题记录中看到您是一名PHP开发人员,因此这里有一个有用的片段,根据HTTP 1.1规范,根据
Accept Language
头确定最接近的匹配:

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

您好,您好,我是一名PHP开发人员。我也有一个系统内置到网站上,根据接受语言确定语言,当没有找到接受语言时,选择英语。这个系统运行良好。只有在上面的示例中,您才不会重定向。即使语言发生变化,您的url也会保持不变。我重定向到。我认为问题就在那里,这是一个爬虫测试,它返回302代码,但不遵循它。还是我弄错了?那个代码只是一个开始的例子。我还是把它扩大了。这段代码在每个下都在使用。啊,是的,我看到它被索引了,它确实在爬虫测试中给出了相同的302重定向错误。我还有一个问题,你使用谷歌网站管理员工具吗?我想知道当你做一个“谷歌机器人视图”测试时你会得到什么。你得到网站的内容了吗?它是空白的。Webcrawlers遵循重定向。另一个想法是,你不是在无限循环中将无语言的webcrawlers重定向到同一个索引页吗?检查Web服务器访问日志。顺便说一句,前面评论中的链接已断开(输入错误)。。