首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索引擎爬虫会被重定向到多语种网站的英文页面(从而避免使用其他语言的页面)

搜索引擎爬虫会被重定向到多语种网站的英文页面(从而避免使用其他语言的页面)
EN

Stack Overflow用户
提问于 2021-12-01 13:40:58
回答 1查看 327关注 0票数 0

我有以下多语言URL结构:

代码语言:javascript
运行
复制
example.com/article123            # english
example.com/fr/article123         # french
example.com/de/article123         # german

根据浏览器语言($_SERVER['HTTP_ACCEPT_LANGUAGE']),有一个自动302重定向到相关语言。这对用户体验很有好处,因为大多数用户不必手动单击语言开关。据我的统计,效果很好。

Problem:当使用Ahrefs网站审核工具(对于搜索引擎爬虫,GoogleBot,.)时,我发现的爬虫会重定向到302,因此永远不会访问法语网站

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

我应该使用什么技术解决方案来避免搜索引擎机器人不正确地爬行多语种网站?

TL;DR:我如何根据浏览器语言为普通用户触发重定向,而不重定向机器人(如GoogleBot、Facebook或Twitter爬虫,它们负责“共享.”)展示卡片)?

这就是我所用的:

代码语言:javascript
运行
复制
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");  
}

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

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-12-01 16:26:21

您需要删除基于$_SERVER['HTTP_ACCEPT_LANGUAGE']的自动重定向的系统。它使你的网站无法通过搜索引擎进行抓取,而且对用户体验也很不利。

与其自动重定向,您还可以在页面中添加一个突出的公告,上面写着:

你的浏览器说你更喜欢英语。您想现在访问英文版吗?

改用英语

有关更多信息,请参见How should I structure my URLs for both SEO and localization?,该部分包含了为什么使用接受语言头重定向会杀死SEO的整个章节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70185265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档