【问题标题】:What is the best place to display the language in your URL?在您的 URL 中显示语言的最佳位置是什么?
【发布时间】:2011-02-25 06:32:33
【问题描述】:

我有一个使用漂亮 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

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

【问题讨论】:

  • 除了语言,对于某些网站,您可能还关心国家,例如en-us 或 en-ca 或 en-au,如果您的内容因国家/地区和语言而异。
  • 国家代码应该大写,例如。 zh-CN。
  • 如果您知道,请添加一个来源,以便建议使用大写国家/地区代码。

标签: url seo multilingual url-design


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我离“正确”答案还很远(我假设没有),但是当您要求 cmets 时,这是我的:

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

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

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

    【讨论】:

      【解决方案3】:

      第一个更有意义。因为如果有人想直接访问您的页面并且他/她只需输入 blabla.com/en 并获得他/她想要的内容...

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我猜你还没有听说过 Apache mod_rewrite 或 IIS URL Rewrite。
        • 其实我经常使用mod_rewrite。我不是在谈论服务器看到的 URL,实际上 mod_rewrite 可以用来从友好的 URL 填充 GET 参数。我说的是人们用来访问资源的 URL。 URL 应该标识资源,而不是它的显示方式。对我来说,改变语言只是改变资源的显示方式(有一些明显的例外,比如维基百科等),所以应该是一个参数。这并不意味着您不能使用友好的 URL,只是这意味着您对于实际上是同一页面的内容有不同的 URL。
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          我会告诉你什么不是最佳实践——使用参数(第三个)。让用户输入复杂的 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、Microsoft 和 Apple 在软件开发世界的三个不同角落,就……嗯……一切而言。有时我倾向于认为这三个大家伙做事只是为了彼此不同意。但如果他们遵循一种常见的做法,那一定是有道理的......

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

            • 子域会产生其他副作用(不同的 cookie,某些搜索引擎可能认为它是不同的站点等)。
            【解决方案8】:

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

            • 方法 1: 恕我直言,当您 想全部推出所有文章 语言同时。但是之后, 当你在一个地方做出改变时, 你需要去所有的地方 做同样的改变。
            • 方法 2: 适合以下用途 维基百科,不同的语言 表示实际不同的网站( 文章不是翻译自 彼此,而是另一个 内容)
            • 方法 3: 通常以某种语言启动,并且 翻译稍后出现(谷歌案例, 例如)。你可以有一个 语言作为默认值,以防万一 未指定语言,甚至将其保存在会话中,以便您在页面更改中保存它。

            【讨论】:

              【解决方案9】:

              我想添加一个我们为 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”的事情。

              【讨论】:

              • +1 用于建议正是出于此目的而存在的工具(Accept-Language)
              • 好主意,但问题是当用户键入“www.mydomain.com/articles/random”并将“nl”作为首选语言时我应该做什么。重定向到“.../random.nl”或只提供语言“nl”但不重定向?重定向并不总是好主意。它比起初看起来更复杂 :-) +1 因为通常网站管理员经常忘记首选语言(例如,这些丑陋的大公司的根页面“选择你的国家”)。
              • 是否所有浏览器都能正确处理其接受语言以使其成为可行的方法? (而且总是需要覆盖标准首选项;我通常想要英语,但并非总是。)
              • 在我们的设置中,编辑器指定他们在 f.e. 中发布的语言。文章,页面等。它们是默认选择(en),但他们可以更改它(f.e. nl)。当仅以一种语言发布时,该 url 回退到内容的(首次发布的)默认语言。默认位置是 www.mydomain.com/articles/random。仅当访问者指定首选语言时,网址才会更改,并且如果可用,他/她会以首选语言获取内容。
              • @Donal Fellows 我相信“接受语言”在现代浏览器中非常普遍。
              【解决方案10】:

              我一定会去的

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

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

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

              【讨论】:

              【解决方案11】:

              我找到了一个不错的resource from Google,关于您可以做出的选择。有一个部分介绍了您可以使用的每种方法的优缺点。

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

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

              【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-01-28
              • 2017-05-01
              • 2011-04-17
              • 2010-10-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多