【问题标题】:Redirect users based on browser language (not in php) [closed]根据浏览器语言重定向用户(不在 php 中)[关闭]
【发布时间】:2016-08-27 10:00:49
【问题描述】:

我的网站将使用 3 种语言。法语 (fr) 是默认语言。 网站结构如下:

根目录(注意:我没有使用 php 文件,只是普通的 html)

/fr/
    Index.html
    About-us.html
    Contact.html

/en/
    Index.html
    About-us.html
    Contact.html

/de/
    Index.html
    About-us.html
    Contact.html

我有问题:

  • 根据用户的 Web 浏览器语言重定向用户的最佳做法是什么?通过 htaccess?
  • 我是否需要根级别的 index.html 页面(出于 SEO 原因或任何其他原因)?也许是法语 index.html?

【问题讨论】:

  • 看看askapache.com/htaccess/modrewrite-tips-tricks.html - 你会看到RewriteCond %{HTTP:Accept-Language} ^.*(de|es|fr|it|ja|ru|en).*$ [NC] RewriteRule ^(.*)$ - [env=prefer-language:%1],这也很有用webmasters.stackexchange.com/questions/57524/… - 你也可以使用JS,但这不是最有效的方法,如果 JS 在客户端被禁用。
  • 旁注:您知道您可以使用.shtml 文件扩展名来执行包含(默认情况下服务器设置的工作方式就是这样),我已经使用这种方法多年了。但是,您可以指示您的服务器将.html 文件视为.shtml,以便在使用相同的页眉/导航/页脚时使您的站点更易于管理,而不必一个接一个地更新一大堆文件一。
  • 谢谢 - 我不知道,很高兴知道!
  • 欢迎格雷格。另外,带有.shtml 的 SSI 允许您(至少我这样做)包含几乎任何文件类型,包括 .php,但是如果您想运行某些 PHP 指令,则会在一定程度上受到限制。
  • 您要求的是客观的“最佳实践”,其中没有这样的野兽。搜索如何根据浏览器区域设置重定向并检查您发现的各种技术。每种技术都有其优点和缺点,您可以自行决定哪种技术最好。如果你有导师,也可以问问他们。

标签: html .htaccess redirect


【解决方案1】:

这里超级简单的工具:

http://www.htaccesstools.com/redirection-by-language/

让基于浏览器语言的 htaccess 重定向变得异常简单。

例子:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* /fr/index.html [L]
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* /en/index.html [L]
RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteRule .* /de/index.html [L]

这是一个硬重定向,浏览器的地址栏确实会显示新页面。不过,这对于用户体验来说比屏蔽 URL 的内部重定向更好。

为了回答您的问题,我们高度认为 index.html 提供了最佳的用户体验。然而,这主要是因为人们普遍期待这一点(website.com/en/、website.com/fr/ 等)。在 SEO 方面,不,如果您不遵循相同的结构,您就不会受到影响。

最佳做法是使用您的最佳猜测(如 htaccess),并且仍然提供用于切换语言的菜单。另外,如果未实际定义 Accept-Language(例如默认情况下转到 /en/),您还需要备用。这可能是 htaccess 中的最后一行,也可能只是根级别的 index.html.htaccess 所在的位置。

除此之外,本地化的投入并不多。

【讨论】:

  • 谢谢!在您看来,我是否也应该将 index.html 文件放在根目录中? (例如,如果语言浏览器不是这 3 种语言中的任何一种?)或者是否有重写规则将所有内容(不是 EN 或 DE)默认重定向到法语页面?
  • 我当然也会放一个默认的 index.html,这只是你最常用的语言,它还提供了一个菜单来选择他们的语言。抱歉,忘记包含了。
  • 我使用RewriteRule ^$ https://%{HTTP_HOST}/en/ [R,L] 进行更精确的重定向并防止重定向循环。
猜你喜欢
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
相关资源
最近更新 更多