国际化web应用的Url格式?

国际化web应用的Url格式?,url,internationalization,Url,Internationalization,情景 web服务器收到http://domain.com/folder/page。Accept Language标头告诉我们用户更喜欢希腊语,语言代码为el。这很好,因为我们有一个希腊版本的页面 现在,我们可以使用URL执行以下操作之一: 返回保留当前URL的希腊版本:http://domain.com/folder/page 重定向到http://domain.com/folder/page/el 重定向到http://domain.com/el/folder/page 重定向到http://

情景

web服务器收到
http://domain.com/folder/page
。Accept Language标头告诉我们用户更喜欢希腊语,语言代码为
el
。这很好,因为我们有一个希腊版本的
页面

现在,我们可以使用URL执行以下操作之一:

  • 返回保留当前URL的希腊版本:
    http://domain.com/folder/page
  • 重定向到
    http://domain.com/folder/page/el
  • 重定向到
    http://domain.com/el/folder/page
  • 重定向到
    http://el.domain.com/folder/page
  • 重定向到
    http://domain.com/folder/page?hl=el
  • ……其他选择

  • 哪一个最好?从用户的角度看利弊?开发者视角?

    我更喜欢3或4,第四个是最好的选择,因为它很早就指定了语言代码。如果您要提供任何重定向,请始终确保使用规范链接标记。

    如果您的页面是公开的,即您无需登录即可查看页面,我不会选择选项1。 原因是搜索引擎不会扫描页面的不同语言版本。 同样的理由也适用于第五种选择。如果查询字符串中包含语言标识,则搜索引擎不太可能将两个页面标识为单独的页面

    让我们看看选项4,将语言放在主机名中。如果网站的不同语言版本包含完全不同的内容,我会使用这个选项。例如,在维基百科这样的网站上,希腊版包含自己的完整文章集,而英语版包含另一套文章集

    因此,如果你没有完全不同的内容(这似乎与你的帖子不一样),你只能选择2或3。我不知道是否有任何令人信服的论据支持其中一个而不是另一个,但在我看来,第三名看起来更好。这就是我要用的

    但这只是一个灵感的评论。我目前正在开发一个web应用程序,它有3个主要部分,一个公共部分,两个部分用于两种不同的用户类型。我选择了以下url方案(英语当然是指语言):

    这样做的原因是,如果我将这三个部分拆分为单独的应用程序,那么当我在路径的顶部有一个部分的名称时,这将是web服务器中的一个简单的重新配置。例如,如果我们在网站的公共部分使用商业CMS系统

    编辑: 反对选项1的另一个论点是,如果你只听accept语言,你就没有给用户一个选择。用户可能不知道如何更改浏览器中的语言设置,或者可能正在使用frinds计算机设置为其他语言。您至少应该给用户一个选择(将其存储在cookie或用户配置文件中)

    我自己的选择是#3:
    http://domain.com/el/folder/page
    。它似乎是网络上最流行的。所有其他备选方案都存在问题:

  • http://domain.com/folder/page
    ——对搜索引擎优化不利
  • http://domain.com/folder/page/el
    ---不适用于带有参数的页面。这看起来很奇怪:…page?par1=x&par2=y/el
  • http://domain.com/el/folder/page
    ---看起来不错
  • http://el.domain.com/folder/page
    ——由于需要添加子域,需要部署更多的工作
  • http://domain.com/folder/page?hl=el
    ——对搜索引擎优化不利

  • 选择选项5,我不认为这对搜索引擎优化有害

    此选项很好,因为它显示了的内容,例如:
    http://domain.com/about/corporate/locations
    与中的内容相同
    http://domain.com/about/corporate/locations?hl=el
    除了语言不同之外。
    hl
    参数应覆盖
    Accept language
    标题,以便用户可以轻松控制事件。只有当缺少
    hl
    参数时,才会使用标题。授权链接因此有点复杂,可能应该通过cookie来解决,cookie将使重定向保持到
    hl
    参数选择的语言(可能是用户从
    Accept language
    设置中更改的,或者是通过处理页面上的所有链接以添加到当前
    hl
    参数中

    SEO问题可以通过为stackoverflow所做的一切创建索引文件来解决,这些文件可能包括不同语言的多组索引,希望能够鼓励在非默认语言的结果中显示出来

    1的使用消除了URL中的差异。2和3的使用表明页面不同,可能不仅仅是语言,就像维基百科一样。4的使用表明服务器本身是分离的,甚至可能是地理上的


    由于地理位置与语言偏好之间的相关性极低,因此提供地理位置相近的服务器的问题应该留给适当的CDN设置来解决。

    这取决于具体情况。我个人会选择第四位,但许多成功的公司都有不同的方法来实现这一点

    • Wikipedia将子域用于各种应用程序 语言(el.wikipedia.org)。
      • 雅虎也是如此,尽管它不支持希腊语
      • Gravatar也是如此(el.Gravatar.com)
    • 谷歌使用一个/intl/el/目录
    • 苹果使用a/gr/directory(尽管是英文的,并且仅限于iPhone页面)

    这真的取决于你。你认为你的客户最喜欢什么?

    我会选择第3个,重定向到
    http://example.com/el/folder/page
    ,因为:

  • 语言选择比页面选择更重要,因此选择
    http://www.example.com/en/x/y/z for the public part.
    http://www.example.com/part1/en/x/y/z for the one private part
    http://www.example.com/part2/en/x/y/z for the other private part.