多语言网站的 Htaccess 和 url [关闭]

Posted

技术标签:

【中文标题】多语言网站的 Htaccess 和 url [关闭]【英文标题】:Htaccess and url for multilingual site [closed] 【发布时间】:2017-08-11 11:10:23 【问题描述】:

我已准备好为我的多语言网站使用子目录格式。 我的第一个问题是: 对于 SEO,我必须翻译 url 中的页面名称还是没用? 示例:

- Same filename
site.com/fr/login
site.com/en/login

- Different filename
site.com/fr/connexion
site.com/en/login

然后,当用户在 site.com 上时:我应该根据用户的 IP 将他重定向到 site.com/ensite.com/fr 吗?或者让我设置一个默认本地,并让我的网址像site.com/pagesite.com/fr/page

最后,从用户当前 URL 获取本地信息的最佳方法是什么? 解析url获取/fr或/en,或者在url中添加一个GET参数,lang=fr(用htaccess隐藏)

谢谢:)

【问题讨论】:

您应该添加有关您的 Web 框架的信息。无论如何,许多人都会为你做你所描述的事情。 【参考方案1】:

作为先决条件,我假设您没有使用框架/库。此外,我从来没有只使用 .htaccess (作为您的问题请求的标题)解决过类似的问题,因此不知道是否可以这样做。不过,以下指南可能会对您有所帮助。

您的第一个问题

一般来说,网页的文件名和路径会影响其排名。此外,使用母语的页面名称和路径可能会帮助您的用户记住您最重要的 URL,即使没有为它们添加书签。

尽管如此,我绝不会翻译属于网络应用程序的页面的页面名称或目录(相对于信息促销 em> 页)。

您提到的登录页面就是一个很好的例子。我几乎可以肯定,您不希望您的网站因其登录页面上的内容而被发现。实际上,有很多网站根本不收录登录页面和其他应用程序页面。

相反,在 SEO 方面,将您的精力投入到您的促销和信息页面中。提供有价值的内容,解释您或您的网站的特别之处,并尽一切可能使这些页面正确编入索引。恕我直言,静态 html 页面是这样做的最佳选择。

此外,如果您翻译属于您的实际应用程序的页面名称,您将遇到很大的麻烦。例如,成功登录后,您的应用程序可能会将用户转移到他的个人仪表板,该仪表板可能基于另一个 HTML 模板/页面。如果您已将该页面名称翻译成不同的语言,那么您的应用程序将必须注意将用户带到正确的版本。基本上,这意味着您需要的应​​用程序版本与您想要支持的语言一样多。当然,有一些技巧可以让生活更轻松,但这将是一个持续的痛苦,绝对不值得付出努力。

总结:创建显示您的 USP(独特卖家位置)的静态页面,并向用户提供有价值的内容(例如复杂的教程等)。翻译这些页面,包括名称和路径,并以各种方式对它们进行 SEO。但是对于实际应用来说,优化它的页面是没有意义的,甚至会适得其反。

你的第二个问题

出于多种原因,我永远不会使用基于 IP 的重定向。

首先,有很多客户在他们的祖国以外的国家。例如,您是否真的要将所有以英语为母语的人重定向到您的匈牙利语页面,因为他们目前正在匈牙利出差?

其次,如今越来越多的用户出于不同的原因使用 ***,因此经常隐藏他们当前所在的国家/地区。

第三,哪个IP地址属于哪个提供商或国家是高度易变的;您将不得不不断更新您的数据库以跟上。

还有更多的原因,但我想你已经明白了。

幸运的是,您的问题有一个解决方案(但请参阅下面的“最后说明”):每个浏览器在从服务器获取页面时,都会告诉服务器首选和接受的语言。例如,Apache 可以直接在RewriteRule 语句中使用该信息并将用户重定向到正确的页面。

如果您无法更改服务器的配置,那么您可以在 CGI 程序中评估相应的标头。

在进行研究时,请查找 Accept-Language HTTP 1.1 标头。一个好的起点可能是here。

你的第三个问题

您最终在第三个问题中混淆了两种不同的东西。语言环境与语言不同。一方面,您在问“...to get local from...”,另一方面,您说“...lang=fr...”,从而给人留下想要获得的印象语言。

如果您想获取语言:请参阅我对第二个问题的回答,或从当前路径解析语言(正如您已经建议的那样)。

如果你想获得语言环境,事情就更复杂了。唯一合理的自动方法是从语言中派生语言环境,但这通常会失败。例如,在进行研究时,我通常更喜欢英语,但另一方面,我位于德国,因此希望日期和时间采用我习惯的格式,因此从我的首选语言派生所需的语言环境将失败.

不幸的是,没有 HTTP 标头可以告诉服务器用户喜欢哪个区域设置。作为起点,this article 可能会对您有所帮助。

关于如何解决这个问题,请参阅最后的评论(下一节)。

最后的评论

正如上面链接的文章已经指出:满足用户的唯一可靠方法是让他在您的应用程序中选择他的语言、区域设置和时区。您可以将用户的选择存储在 cookie 或后端数据库中;各有优缺点。

我通常在我的项目中使用所有方法(HTTP 标头、cookie、数据库)的组合。

【讨论】:

【参考方案2】:

首先考虑人类。 URL 翻译对法国用户来说重要吗?有些人可能会认为在 URL 中获取翻译的单词很好。其他地区的用户可能不这么认为。搜索引擎会考虑用户行为因素。如果您的解决方案对用户更方便,则 SEO 因素会更高。

如果用户获得预期的语言版本,那就太好了。如果网站通过 IP、HTTP 标头、cookie 等建议语言版本,则可以帮助他们。有些人可能更喜欢另一种语言,有些人可能正在旅行。所以让他们手动选择语言版本仍然很重要。

如有疑问,请阅读manuals并分析竞争对手的网站。

【讨论】:

【参考方案3】:

我通常在大多数网站上显示他们提供的 URL,如您提到的 site.com/en 和 site.com/fr,但您希望如何向用户显示网站。我更喜欢默认 site.com/en 并让用户选择他的语言。

如果您仍然感到困惑,请参考下面的链接,它将很有用。

See Refferal Link Here

【讨论】:

【参考方案4】:

你应该翻译路径吗?

如果可能,一定要采取一切措施 - 因为这将帮助该语言的用户感觉自己是“一等公民”。登录路径可能不会对 SEO 产生太大影响,但翻译内容页面上的 URL 可能会帮助它们更容易被发现。

您可以阅读Google's recommendations on multi-regional and multilingual sites,它声明“可以翻译 URL 中的单词”。

你应该基于IP重定向吗?

这可以帮助初次使用的用户,但需要牢记以下几点:

这会有多准确?例如。如果我说英语但我访问法国然后查看您的网站 - 我会得到法语。如果您的目标市场是携带移动设备的环球旅行者,那么它可能不是最佳选择。例如,看Accept-Language 是否更好?

对每个请求的 IP 地址进行地理定位是否会给您的服务器带来任何性能问题?或者对外部地理编码服务进行过多调用?确保进行容量规划,并减少您已经知道区域设置的调用(例如来自 cookie,或用户明确说明他们的偏好。

即使您猜测首选语言环境,也始终允许明确的用户偏好来覆盖它。没有什么比在页面之间移动更令人沮丧的了,让网站决定它更了解您理解的语言:-)

只要您可以轻松地在站点之间切换,您就不需要特定的目标网页。如果您不确定是否应该重定向用户,弹出横幅并没有什么坏处(例如,amazon.com 将向英国用户显示横幅,让他们可以选择切换站点 - 但不为他们做决定)

您应该如何构建您的网址?

在 URL 中的某处使用语言(作为子域或文件夹)可能最适合 SEO。不要忘记更新您的站点地图,以向爬虫表明存在不同语言的备用内容页面。

【讨论】:

以上是关于多语言网站的 Htaccess 和 url [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 多语言网站规则

SEO优化多域和多语言网站[关闭]

如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由

多语言网站的 Django 重定向

htaccess 带有子目录的多语言站点,默认为 301

纸壳CMS可视化建站系统搭建多语言网站