【问题标题】:Change Language with .htaccess使用 .htaccess 更改语言
【发布时间】:2017-08-08 20:46:23
【问题描述】:

我正在建立一个多语言网站,它将使用英语、德语和法语。英文站点将是 root,其他站点将位于其 子目录

  • 英文:example.com
  • 德语:example.com/de
  • 法语:example.com/fr

我很难找到干净的解决方案使用查询字符串从一种语言重定向到另一种语言。 (?lang=en?lang=de、?lang=fr

此代码有效,但我认为它太长了:

# Languages
<IfModule mod_rewrite.c>
RewriteEngine on

# Deutsch (Change FR to DE, or add DE if English)
RewriteCond %{QUERY_STRING} lang=de
RewriteRule ^fr/(.*) de/$1? [L,R=301]
RewriteCond %{QUERY_STRING} lang=de
RewriteRule ^(.*) de/$1? [L,R=301]

# English (Remove DE if German, Remove FR if French)
RewriteCond %{QUERY_STRING} lang=en
RewriteRule ^de/(.*) /$1? [L,R=301]
RewriteCond %{QUERY_STRING} lang=en
RewriteRule ^fr/(.*) /$1? [L,R=301]

# French (Change DE to FR, or add FR if English)
RewriteCond %{QUERY_STRING} lang=fr
RewriteRule ^de/(.*) fr/$1? [L,R=301]
RewriteCond %{QUERY_STRING} lang=sq
RewriteRule ^(.*) fr/$1? [L,R=301]
</IfModule>

是否有任何更好的解决方案,所以如果我们添加更多语言,将会有更短、更简洁的代码

这是我第一次在 htaccess 上工作!

谢谢!

【问题讨论】:

  • 可能值得尝试用 php 代替?只需检查 lang GET 并相应地更改标题。
  • 它是一个 WordPress 多站点,每个站点都有自己的语言,因此很难更改每个标题。我在想 htaccess 会更容易,尽管我不知道如何更改语言(如果不需要插件)

标签: .htaccess mod-rewrite query-string multilingual


【解决方案1】:

你为什么不通过 dir 链接到所需的语言而不使用查询字符串? 因此,如果您的用户想要更改语言,您可以提供从 example.org/de/some-pageexample.org/fr/some-page 的链接,而不是使用 example.org/de/some-page?lang=fr 然后将他重定向到 example.org/fr/some-page .. 这对我来说没有意义。

如果您希望用户查看特定语言的页面,您可以通过 php 或其他服务器端语言重定向他。

您只需要一个这样的 .htaccess 来防止用户在没有选择语言的情况下查看任何网站:

RewriteEngine on

# add EN if there was no language selected
RewriteCond %{REQUEST_URI} !^fr|de|en
RewriteRule ^(.*) en/$1? [L,R=301]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2021-12-10
    • 2013-09-28
    • 2017-11-04
    • 2021-09-20
    相关资源
    最近更新 更多