【问题标题】:Internationalization and Search Engine Optimization国际化和搜索引擎优化
【发布时间】:2009-12-01 19:28:10
【问题描述】:

我想将我的网站国际化,以便它可以用多种语言访问。语言设置将在请求数据中自动检测,并且可以在用户设置中覆盖/存储在会话中。

我的问题是关于如何根据页面 URL 的语言显示同一页面的不同版本。假设我们只是查看http://www.example.com/ 的索引页,默认为英文。现在如果说法语的人加载索引页面,我应该将 URL 保留为http://www.example.com/,还是应该将其重定向到http://www.example.com/fr/

我试图弄清楚这对 SEO 有什么好处或后果。我不希望该网站的法语版本出现在 google.com 中,如果它阻止相同页面的英文版本出现在那里,但我希望它出现在 google.fr 中。

【问题讨论】:

    标签: seo internationalization search-engine url-routing


    【解决方案1】:

    当您开始将您的网站本地化为多种语言时,从搜索的角度来看,有很多事情需要考虑。通常,您要小心并确保您对用户的意图不太了解。在某些情况下,自动检测语言并将它们存储在 cookie 中可能会很好,但如果它们成为您的本地化正常工作的要求,那么您可能会遇到搜索引擎(以及真人)的一些问题。

    对于搜索引擎,您需要确保他们无需 POST 请求(无下拉表单)、javascript、flash 或 cookie 即可找到并访问所有不同语言的所有内容。因为搜索引擎一般不使用这些技术。

    事实证明,这通常对真正的客户也有好处。如果您依赖浏览器设置或 ip 检测,那么您的一些真正的客户要么借用朋友的电脑,要么在国外旅行,可能会卡在错误的语言上(Microsoft Bing 实际上有一段时间遇到这个问题)。

    以下是一些需要牢记的最佳做法

    • 每种语言都应包含在您的信息架构中的某个根目录下。最佳选择是为您的网站获取每个特定区域的 TLD (mysite.fr)。虽然这有时不可行,但第二个选项是使用子域 (fr.mysite.com),第三个选项是使用子文件夹 (mysite.com/fr)。这使我们最容易综合查看一组页面并最好地确定语言/地区。 不要将其作为参数 (mysite.com/products/iphone/lang=en&region=us),这是我们最难检测的情况。

    • 我们有语言分类器(人工智能网络),试图确定页面描述的语言/区域。因此,请确保您的页面上有足够的线索来了解该语言是什么。例如。如果页面是法语,请确保元描述标签也是法语,<h1> 标签和标题也是如此,并确保您有几个法语句子。许多网站会混合多种语言,页面上几乎没有真正的法语

    • 电话号码、邮寄地址和地理位置的名称也是搜索引擎识别页面区域/语言的重要线索。好好利用这些(并确保它们是页面上的实际文本,而不是图像)

    • 使用 Google 网站管理员工具指定页面的语言和区域。创建一个帐户,验证您的网站,然后您可以指定您网站不同部分的目标区域和语言。

    错误信息 - lang 属性或您可能听说过的任何语言标签目前未被任何搜索引擎使用。当我们(Microsoft Bing)去年对这些进行分析时,人们使用的最常见的“标准”语言标签只出现在网络上 0.000125% 的页面上——还不够有用!

    Vanessa Fox(她建立了谷歌的网站管理员中心,并创建了站点地图协议)最近写了一篇特别好的文章,介绍了谷歌如何看待本地化,以及这对网站架构意味着什么。我建议在这里查看:http://www.ninebyblue.com/blog/making-geotargeted-content-findable-for-the-right-searchers/

    【讨论】:

    • 非常详尽的回复,我无法告诉你我多么感激这一切!我一直在使用谷歌网站管理员工具,但我从来没有注意到那里的语言设置,因为我从来不需要它。我现在就去找。我还在使用 CakePHP 框架,它允许我为 I18n 准备所有字符串;他们只需要创建的 .PO 文件,以及处理语言代码子域/子文件夹/我决定使用的任何代码所需的代码。
    【解决方案2】:

    这就是我在 i18n 中解决my personal website 问题的方法:

    • 当用户到达时,例如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 sitemaps 进一步确保搜索引擎可以找到所有页面和所有不同的语言版本。

    【讨论】:

    • 所有这些似乎都是很好的建议,但我被困在一颗子弹上。你能详细说明一下吗? => “没有特定语言 URL 的页面(即语言取决于客户端数据的地方)使用例如 告诉搜索引擎在哪个特定语言 URL可以找到该页面。”
    • @naomik:假设搜索引擎访问/gallery.php,页面默认为英文。所以它应该在标题中包含<link rel="canonical" href="/en/gallery.php">,以便搜索引擎知道这是它所看到的内容的规范 URL。如果搜索引擎在同一 URL 下看到不同的语言版本,这将防止出现问题。
    【解决方案3】:

    由于页面内容不同,我会为不同的语言提供不同的 URL。

    主要的搜索引擎足够聪明,可以根据页面内容找出页面的语言。在 URL 中包含语言代码(如 fr)也应该为搜索引擎提供提示。

    【讨论】:

    【解决方案4】:

    两个答案:我是如何做到的,以及我如何收集 SEO 用户认为你应该这样做的。

    我的网站主要有英文页面和几个德文页面,我计划有更多德文页面,可能还有一些西班牙文页面。我的根页面与语言无关,并且在对应的英语页面下方有与德语页面(它们存在的地方)的导航链接,并使用英语和德语不同的 url(例如,/services.html 与 /lei​​stungen.html )。

    这是一个很好的用户界面,但被认为是糟糕的 SEO,因为所有不同的语言都纠缠在一起,搜索引擎无法将它们解开,这可能会在计算搜索质量指标时产生不良后果。

    SEO 正确的做法是保持一个独特的层次结构,可能是 www.site.tld/lang/ 的形式,但更好的是 lang.site.tld/,每个都有一个单独的 sitemap.xml 文件。

    我更关心访问者而不是搜索引擎,所以我会继续做错事。

    【讨论】:

      【解决方案5】:

      这是我处理该案的想法。

      1. 您必须使用 php 访问您的页面
      2. 您为网站的每种语言创建一个文件夹,例如 root/lang/en(用于英语)
      3. 您创建了一个 .htaccess 文件(它必须位于 /lang/ 文件夹中),您可以在其中编写一些重定向(重写 url) 以下是该 .htaccess 文件中的内容:

       <IfModule mod_rewrite.c>
              RewriteEngine On
              RewriteRule lang/(+)$ index.php?lang=$1 [QSA,NC]
        </IfModule>
      1. :首先检查该重写模块是否为 在 apache 上存在并处于活动状态,因为如果没有,它会弹出一个错误

      2. RewriteEngine On :我们准备重写引擎开始处理 规则

      3. lang/(+)$ 表示对该文件夹或文件的子文件夹的任何请求 应该重定向到索引页面并传递名称 文件的子文件夹作为 index.php 文件的 lang 参数 根据语言值本地化
      4. [QSA] 表示命名的捕获(语言)将附加到新创建的 URI,

      5. [NC] 表示我们的 URI 不区分大小写

      【讨论】:

        猜你喜欢
        • 2011-08-28
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 2018-07-06
        • 1970-01-01
        相关资源
        最近更新 更多