.htaccess 将根目录重定向到 i18n 内容

.htaccess 将根目录重定向到 i18n 内容

我遇到了问题.htaccess但不知道如何解决。

我们的网页在两个域名上展示:example.deexample.com

当用户请求根目录时,我想将用户重定向到 i18n 内容:

  • https://example.com/URL 应重定向至https://example.com/en
  • https://example.de/URL 应重定向至https://example.de/de

当用户请求 i18n 内容时不应该重定向,例如:

  • https://example.com/es/***URL 应重定向至https://example.com/es/***
  • https://example.de/es/***URL 应重定向至https://example.de/es/***

有人可以帮忙吗?

答案1

要仅重定向相应域的文档根目录,您可以使用文件顶部附近的 mod_rewrite 执行如下操作.htaccess

RewriteEngine On

# Redirect "example.com/" to "example.com/en"
RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^$ /en [R=302,L]

# Redirect "example.de/" to "example.de/de"
RewriteCond %{HTTP_HOST} =example.de
RewriteRule ^$ /de [R=302,L]

这假设您已经规范化了主机名(即没有www子域名)。

根据您的示例,我省略了目标 URL 路径上的尾部斜杠(例如/en)。但是,如果/en(和/de)是物理子目录,那么您必须包括尾随斜杠,否则 mod_dir 将触发辅助 301(永久)重定向以附加尾随斜杠。

正则表达式^$- 仅匹配文档根目录(空的 URL 路径)。条件模式 =example.com是与 HTTP 请求标头匹配的精确匹配字符串比较(不是正则表达式)Host

还请注意,这是一个 302(临时)重定向。语言重定向通常应该是“临时的”,允许用户更改语言。但是,如果这是永恒的,然后将其更改为 301,但前提是您已确认它能够按预期工作。

相关内容