22

我有一个使用漂亮 URL 的多语言网站,即所谓的搜索引擎友好 URL。

现在有几个地方可以在 URL 中定义语言:

    • www.example.com/en/articles/random
    • www.example.com/nl/articles/random
    • en.example.com/articles/random
    • nl.example.com/articles/random
    • www.example.com/articles/random?lang=en
    • www.example.com/articles/random?lang=nl

是否有任何首选的方式来展示这一点,或者有没有我没有包括的另一种更好的方式?

4

11 回答 11

8

我会告诉你什么不是最佳实践——使用参数(第三个)。让用户输入复杂的 URL 是自找麻烦。

您的页面可以在内部使用 GET 参数来查找语言,但使用 Web 服务器中可用的 URL 重写模块使其变得简单,例如第一个 - www.mydomain.com/en/articles/random

即使是第二个也可以,除了大多数用户键入域名并按 Ctrl + Enter。

https://addons.mozilla.org/en-US/firefox/

http://msdn.microsoft.com/en-us/default.aspx

http://www.apple.com/in/

Mozilla、微软和苹果在软件开发世界的三个不同的角落,就……嗯……一切而言。有时我倾向于认为这三个大家伙做事只是为了彼此不同意。但是,如果他们遵循惯例,那一定是有道理的……

于 2010-05-28T18:55:02.883 回答
4

如果您担心搜索引擎的漂亮网址,请首先注意大多数主要搜索引擎能够在解析时检测到该语言,因此除非使用特定语言是一个非常重要的方面,否则您不必担心被搜索引擎友好。

  • 方法 1:恕我直言,当您想同时发布所有语言的所有文章时,恕我直言。但是,当您在一个地方进行更改时,您需要在所有地方进行相同的更改。
  • 方法 2:适用于 wikipedia 等用途,其中不同的语言意味着实际不同的网站(文章不是相互翻译,而是另一种内容)
  • 方法 3:如果您通常以某种语言启动,并且稍后会出现翻译(例如 Google 案例),那么这是一个不错的选择。如果未指定语言,您可以使用默认语言,甚至可以将其保存在会话中,以便将其保存在页面更改中。
于 2010-05-28T18:58:07.210 回答
2

我想添加一个我们为 www.openimages.eu 选择的:

4)
www.mydomain.com/articles/random.en
www.mydomain.com/articles/random.nl

但最好的当然是听浏览器在其请求中传达的首选语言:

Accept-Language nl,en;q=0.7,en-us;q=0.3

如果可用,默认情况下以该语言提供您的页面。您可以为用户提供一个开关来执行“.en”或“.nl”的事情。

于 2010-05-28T19:02:49.533 回答
2

从 Google 找到了一个很好的资源,可以帮助您做出选择。有一个部分介绍了您可以使用的每种方法的优缺点。

我已经在多语言网站上苦苦挣扎了一段时间。

文章中肯定有一些点在提到的答案中没有提到。这就是为什么我觉得有必要将其发布为答案。我希望这可以帮助某人。

于 2010-07-03T23:14:32.730 回答
1

我认为这取决于您的环境。您是使用带有数据库的 Web 框架以多种语言生成相同的页面,还是有静态页面?

在许多常见的 Web 框架(rails 或 symfony)中,您可以为 #1 设置路由规则,该规则将自动使用控制器用来生成适当内容的语言填充参数。当然,三个也可以,但在我看来这有点分散注意力。

如果您在 Web 服务器级别导致重定向,并且具有允许来自 / 的 url 而不会潜在地“丢失”用户的语言设置的优势,那么 2 特别合适。换句话说,指向 /home 的链接会将您带到“主页”页面的正确语言版本。

最后一个选项是将语言作为用户偏好存储在 cookie 中,并且根本不将其填充到 url 中。

于 2010-05-28T18:45:06.257 回答
0

我远不知道“正确”的答案(我假设没有),但是当您征求意见时,这是我的:

URL(或 URI)是描述或标识资源的东西。如果我没记错的话,URL 不应该取决于资源的显示方式(HTML、XML、JSON 等)。

您还可以将语言视为指定资源应如何显示的一种方式。

所以在我看来,最后一个选项,即将语言指定为参数会更合适。

于 2010-05-28T18:45:26.257 回答
0

第一个更有意义。因为如果有人想直接访问您的页面并且他/她可以输入 blabla.com/en 并达到他/她想要的...

于 2010-05-28T18:47:32.057 回答
0

我不知道在这种情况下是否有任何“最佳实践”,因为它可能只是归结为个人意见。

对我来说,我倾向于第三个选项,因为它实际上是在加载相同的页面,您只是使用 GET 参数修改内容。使用单独的 URL(而不是参数)对我来说意味着它是一个完全独立的页面/资源,在这种情况下它不会。您可能还会让搜索引擎以各种语言等多次索引该页面(尽管这可能是您想要的)。

于 2010-05-28T18:48:06.267 回答
0

搜索引擎将子域视为独立的网站。我不确定它如何影响 SEO。

于 2010-05-28T18:50:28.133 回答
0

如果您正在寻找“搜索引擎友好”和“漂亮”的 URL,您应该避免使用未屏蔽的 GET 参数。它们看起来不像子域或子目录那么好,也不完全对 SEO 友好。

考虑到这一点,我会选择子域。你得到一个简单的、传统的“开关”来修改显示的语言,它不会隐藏在你的 URL 中间。很容易发现和改变。

于 2010-05-28T18:57:12.893 回答
-1

我肯定会去

www.mydomain.com/articles/random?lang=en
www.mydomain.com/articles/random?lang=nl 

因为更自然地说:“这个链接(完整链接)是英文或荷兰文”。

否则(domain/lang/restof url)给人的印象是你有某种结构,其中包含 en 和 nl 的不同内容。这同样适用于 lang.domain/...

于 2010-05-28T19:30:27.570 回答