我有以下多语言URL结构:
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爬虫,它们负责“共享.”)展示卡片)?
这就是我所用的:
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");
}注意:重定向只发生一次(通过设置),因为浏览器设置为德语的访问者可能希望访问英文网站,而不是每次都重定向到德国网站。示例:
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发布于 2021-12-01 16:26:21
您需要删除基于$_SERVER['HTTP_ACCEPT_LANGUAGE']的自动重定向的系统。它使你的网站无法通过搜索引擎进行抓取,而且对用户体验也很不利。
与其自动重定向,您还可以在页面中添加一个突出的公告,上面写着:
你的浏览器说你更喜欢英语。您想现在访问英文版吗?
改用英语
有关更多信息,请参见How should I structure my URLs for both SEO and localization?,该部分包含了为什么使用接受语言头重定向会杀死SEO的整个章节。
https://stackoverflow.com/questions/70185265
复制相似问题