搜索引擎如何查看本地化的Django站点?

时间:2010-10-20 18:15:14

标签: django internationalization search-engine gettext django-middleware

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

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

当搜索引擎抓取某个网站时,它的代理字符串中是否通常有首选语言?德国蜘蛛会获得德国网站,西班牙人会获得西班牙语网站吗,或者他们只会获得用户没有语言设置时显示的默认英文网站?这是否因搜索引擎而异,是否存在个别爬虫可能会或可能不会遵守的“标准方法”?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

不要依赖搜索引擎在这方面可能做的事情。您希望抓取所有版本。为此:

  • 为不同语言版本提供不同的网址。
  • 确保搜索引擎可以找到不同的版本。

总的来说,我相信我在my homepage上的方式在搜索引擎和普通用户方面都非常理想:

  • 当用户到达时,例如brazzy.de/index.php,该网站尝试从cookie(如果存在)或浏览器设置(接受语言标题)中确定语言,默认为英语,并且不重定向
  • 每个页面都有指向该页面不同语言版本的链接(IMO是用户方便的最重要因素,同时也确保搜索引擎可以轻松找到不同版本)。
  • 这些链接导致例如brazzy.de/en/index.php,在我的案例中改写为brazzy.de/index.php?lang=en - 这可以确保搜索引擎看到不同语言版本的不同网址。
  • 访问此类子目录会将语言cookie设置为该语言
  • 没有特定于语言的URL的页面(即语言取决于客户端数据的位置)使用例如<link rel="canonical" href="/en/">告诉搜索引擎可以找到该页面的特定语言网址。
  • 使用XML sitemaps进一步确保搜索引擎可以找到所有网页和所有不同的语言版本。

答案 2 :(得分:0)

使用this answer确保您使用不同语言的不同网址。更好的是,将不同的域扩展名(example.de,example.es)与hreflang meta tag框架结合使用。