4

我有一个 Django 站点,它使用本地化中间件与 gettext 和 trans/blocktrans 模板标签结合,根据用户代理字符串中的首选语言向访问者显示不同的页面(这似乎是在 Django 中做事的标准方式) .

这适用于支持的语言(目前只有西班牙语、英语和德语,还有更多语言)。如果我将浏览器中的首选语言设置为不同的语言,我会得到该翻译的页面。但是,我不知道它如何出现在搜索引擎中。

当搜索引擎抓取网站时,它的代理字符串中是否通常有首选语言?德国蜘蛛会获得德国网站,西班牙蜘蛛会获得西班牙网站,还是只会获得当用户没有设置语言时显示的默认英文网站?这是否因搜索引擎而异,是否有一种“标准方式”来处理单个爬虫可能会或可能不会坚持的事情?

4

3 回答 3

3

机器人通常在 http 标头中没有接受语言设置。这意味着 django 将为您的默认语言提供服务。区域搜索引擎可以将接受语言设置为他们喜欢的任何机器人,但您不能依赖它。最好为每种语言设置不同的页面。例如http://your.website.com/english/ ,然后在您的中间件中设置重定向到正确的语言页面(如果存在特定的接受语言)。

于 2010-10-20T18:46:00.763 回答
2

不要依赖搜索引擎在这方面可能会做什么。您希望抓取所有版本。为了实现这一点:

  • 对于不同的语言版本有不同的 URL。
  • 确保搜索引擎可以找到不同的版本。

总的来说,我相信我在主页上的做法对于搜索引擎和普通用户来说都接近理想:

  • 当用户到达时,例如 brazzy.de/index.php,站点尝试从 cookie(如果存在)或浏览器设置(接受语言标头)确定语言,默认为英语,并且不重定向
  • 每个页面都有指向该页面不同语言版本的链接(IMO 是用户方便的最重要因素,并且还确保搜索引擎可以轻松找到不同的版本)。
  • 这些链接导致例如 brazzy.de/en/index.php,在我的情况下,它被重写为 brazzy.de/index.php?lang=en - 这确保搜索引擎看到不同语言版本的不同 URL。
  • 访问这样的子目录会将语言 cookie 设置为该语言
  • 没有特定语言 URL 的页面(即语言取决于客户端数据)使用例如<link rel="canonical" href="/en/">告诉搜索引擎在哪个特定语言 URL 处可以找到该页面。
  • 使用XML 站点地图进一步确保搜索引擎可以找到所有页面和所有不同的语言版本。
于 2010-10-20T18:55:46.400 回答
0

使用hreflang 元标记,但要确保为不同的语言使用不同的 url。更好的是,结合Django 站点框架使用不同的域扩展(example.de、example.es)。

于 2015-06-16T12:42:25.517 回答