gpt4 book ai didi

.htaccess - 使用 .htaccess 更改语言

转载 作者:行者123 更新时间:2023-12-02 04:35:56 26 4
gpt4 key购买 nike

我正在构建一个多语言网站,将使用英语、德语和法语。英文站点将是根目录,其他站点将在它们的子目录中:

  • 英语: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!

谢谢!

最佳答案

为什么不通过目录链接到所需的语言并且没有查询字符串?因此,如果您的用户想要更改语言,您可以提供从 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]

关于.htaccess - 使用 .htaccess 更改语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com