【发布时间】: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