You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置:将无语言子目录域名重定向至对应语言子目录

解决重定向循环问题,实现domain.it到domain.com/it/的正确重定向

你的问题核心是重定向目标写错了,同时规则没有区分已完成重定向的请求,导致了无限循环。咱们一步步来修正:

为什么会出现循环?

你原来的规则把domain.it重定向到了同域名下的www.domain.it/it/,当这个重定向请求到达服务器时,HTTP_HOST仍然是www.domain.it,满足规则里的^(www\.)?domain.it$条件,规则会再次触发重定向,就这样陷入了循环。

正确的.htaccess配置

我们需要把domain.it(包括带www的版本)的所有请求直接重定向到domain.com/it/,这样重定向后的请求域名变成domain.com,不会再触发针对domain.it的规则,彻底避免循环。

完整规则如下:

# 1. 处理 domain.it 的重定向:所有请求转到 domain.com/it/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.it$ [NC]
RewriteRule ^(.*)$ https://www.domain.com/it/$1 [R=301,L]

# 2. 可选:处理 domain.com 上的非语言目录请求(如果需要)
# 如果访问 domain.com 根目录或其他非/en/、/it/路径,重定向到/it/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/(en|it)/ [NC]
RewriteRule ^(.*)$ https://www.domain.com/it/$1 [R=301,L]

关键细节说明

  • 目标域名修正:把重定向目标从www.domain.it/it/改成www.domain.com/it/,跨域名跳转后,原规则的触发条件不再满足,自然不会循环。
  • 保留请求路径:RewriteRule里的$1会把原请求的路径(比如domain.it/about)带到新地址(变成domain.com/it/about),保证用户访问的内容对应正确。
  • 缓存注意:如果之前用了301重定向,浏览器会缓存旧规则,测试时记得清除浏览器缓存,或者先改用R=302临时重定向,确认没问题后再改回301。

内容的提问来源于stack exchange,提问作者Michele Posenato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:20:31