我们有一个多语言应用程序,可以使用 GET 参数来区分不同的语言版本以及客户端的浏览器语言。如果语言不受支持或未知,我们将使用英语作为后备。目前支持的语言是英语和德语,顺便说一句。
因此,浏览器语言为“en”的访问者(任何其他语言,如“es”、“zh”等 - 除了“de” - 将导致所描述的英语)将获得不同 url 的以下语言版本:
- mydomain.com --> 英文版
- mydomain.com?language=en --> 英文版
- mydomain.com?language=de --> 德语版
到目前为止,这是可行的,但这是我们在使用 Google 索引时遇到的问题:
当我们从德国或使用 google.de 搜索网站时,一个(至少是我们的客户)会期望得到德语的结果。
但是,Google 使用英文文本而不是德文文本显示结果(页面摘录/元描述)。
例如,搜索“mydomain”(请原谅程序员艺术:)):
My Domain Title
http://www.mydomain.com
Here's the english meta description even if we search from Germany.
问题似乎是 GoogleBot 要么使用英语,要么不提供任何语言信息(我认为是这种情况),因此获得了“mydomain.com”的英文版本。
我们试图帮助 GoogleBot 并将“备用”链接放入页面标题,即对于“mydomain.com”,我们将拥有这些
<link rel="alternate" hreflang="en" href="http://www.mydomain.com?language=en" />
<link rel="alternate" hreflang="de" href="http://www.mydomain.com?language=de" />
然而,尽管理论上(据我们所知)GoogleBot 现在应该知道该页面的不同语言版本,但它仍然返回英文结果。
我们还考虑过使用“规范”标签,但这是否意味着我们必须选择一种语言版本才能被索引?
我们的最终目标是让谷歌为国际用户返回英文版页面,为德国用户返回德文版。
关于我们如何实现这一目标的任何提示?
更新:
这是我们迄今为止为解决这个问题所做的工作。
首先,我们将语言移动到站点的路径中,每当缺少该语言时,我们假定为德语。
因此我们有这个结果:
http://www.mydomain.com --> 301 to "http://www.mydomain.com/de/"
http://www.mydomain.com/de/ --> German, alternatives are "http://www.mydomain.com/de/" and "http://www.mydomain.com/en/"
http://www.mydomain.com/en/ --> English, alternatives are "http://www.mydomain.com/de/" and "http://www.mydomain.com/en/"
德语 Google 现在按预期显示德语结果,但英语 Google(或设置为显示英语结果的德语 Google)也显示德语结果。我认为原因要么是重定向错误,要么是谷歌并不在意。