【问题标题】:Search engine crawlers get redirected to English pages (and thus avoid other languages' pages) with a multilingual website搜索引擎爬虫通过多语言网站被重定向到英文页面(从而避免其他语言的页面)
【发布时间】:2021-12-02 00:26:21
【问题描述】:

我有以下多语言 URL 结构:

example.com/article123            # english
example.com/fr/article123         # french
example.com/de/article123         # german

根据浏览器语言 ($_SERVER['HTTP_ACCEPT_LANGUAGE']),会自动 302 重定向到相关语言。这有利于用户体验,因为大多数用户无需手动单击语言切换器。根据我的统计,效果不错。

问题:当使用 Ahrefs 网站审核工具时(搜索引擎爬虫、GoogleBot 等也一样),我看到 他们的爬虫被 302 重定向,因此永远不要访问法国网站

确实,当爬虫(可能设置为英文)访问example.com/fr/article123 时,它将被重定向到example.com/article123。我想这些爬虫没有考虑 cookie,所以所有页面都是一样的。

我应该使用什么技术解决方案来避免搜索引擎机器人错误地抓取多语言网站?

TL;DR:我怎样才能根据普通用户的浏览器语言触发重定向,并且不重定向机器人(例如负责“分享”的 GoogleBot、Facebook 或 Twitter 爬虫...”显示的卡片)?

这是我用的:

function lang_redirect() {  
    if (isset($_COOKIE['lang_redirect']))  // already redirected in the last 24 hours, don't do it again
        return;
    global $lang, $requesturi;
    $browserlang = getlang($_SERVER['HTTP_ACCEPT_LANGUAGE']);   // fr, de, en...
    $link = lang_translation_link($browserlang);
    if (($browserlang != $lang) && ($link != ''))
        header("Location: " . $link);      // redirect now!
    header("Set-Cookie: lang_redirect=1; Max-Age=86400; Path=/; HttpOnly; SameSite=Lax");  
}

注意:重定向只发生一次(通过设置 cookie),因为浏览器设置为德语的访问者可能想要访问英文网站而不被重定向每次到德国网站。示例:

example.com/article123          # browser set to german
=> example.com/de/article123    # automatic redirection, setting a cookie to not redirect anymore
example.com/article123          # user returns on english website
=> no redirection here because there has already been a first redirection

【问题讨论】:

    标签: php redirect cookies web-crawler multilingual


    【解决方案1】:

    您需要删除基于$_SERVER['HTTP_ACCEPT_LANGUAGE'] 自动重定向的系统。它使您的网站无法被搜索引擎抓取,并且不利于用户体验。

    您可以在页面上放置一个醒目的通知,而不是自动重定向:

    您的浏览器显示您更喜欢英语。您现在要访问该页面的英文版吗?

    [切换到英文]

    有关更多信息,请参阅How should I structure my URLs for both SEO and localization?,其中有一整节内容说明了为什么使用 accept-language-header 进行重定向会杀死 SEO。

    【讨论】:

    • 是和不是。许多多语言 WP 插件(如果我没记错的话,比如 Polylang 和 WPML)具有这种自动重定向功能(我的问题末尾提到的一天只有 一次),它们是搜索引擎爬虫-友谊赛。如何根据浏览器语言同时实现搜索引擎爬虫友好和自动重定向?这是可能的,因为某些插件会这样做。谢谢!
    • 我不相信这些插件有这样的重定向功能。例如,WPML 不会在他们自己的网站上重定向:$ curl --head --header 'Accept-Language: en' https://wpml.org/es/caracteristicas/ HTTP/2 200 Polylang 没有示例网站列表,我可以在其中测试我能找到的网站,他们的网站也没有我看到的其他语言版本。
    • 几年前我确实有一个使用 WPML 的网站,并且我确认 100% 它具有此功能(有关该功能,请参阅here)。我记得两种语言的 Google 索引都很完美。
    • 该页面说他们在 JavaScript 中实现了重定向以防止谷歌看到它们,但自 2015 年以来谷歌执行 JavaScript 并且重定向现在对 SEO 来说是个问题。这里有完整的帖子:wpml.org/documentation/getting-started-guide/language-setup/…
    • Google 只执行页面大约 5 到 6 秒,我相信 10 秒对 Google 来说也应该没问题。然而,在 10 秒后重定向页面对于用户来说远非理想。
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多