国际化web应用的Url格式?
情景 web服务器收到国际化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://
http://domain.com/folder/page
。Accept Language标头告诉我们用户更喜欢希腊语,语言代码为el
。这很好,因为我们有一个希腊版本的页面
现在,我们可以使用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/elhttp://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.