我遇到了问题.htaccess
但不知道如何解决。
我们的网页在两个域名上展示:example.de
和example.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,但前提是您已确认它能够按预期工作。