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

LiteSpeed/Apache重写规则实现镜像站隐藏双域名子文件夹咨询

你之前的规则失效核心原因有两个:

  1. 规则优先级逻辑错误:第一条重写规则已经把所有不存在的路径都映射到了/domain.com/下,后续的www.domain.com规则永远不会被触发
  2. 缺少了「暴露子目录路径的URL重定向清理」逻辑,没有把用户/页面链接里带/www.domain.com/前缀的路径先重定向为干净路径

完整解决方案

以下是适配你需求的完整.htaccess规则:

RewriteEngine On

# 第一部分:清理暴露子目录的URL,301重定向为干净路径
# 处理带/www.domain.com/前缀的请求
RewriteRule ^www\.domain\.com/(.*)$ /$1 [L,R=301,NC]
# 处理带/domain.com/前缀的请求(避免首页外的domain路径暴露)
RewriteRule ^domain\.com/(.*)$ /$1 [L,R=301,NC]

# 第二部分:内部路径映射
# 首页特殊处理:映射到domain.com的index.html
RewriteRule ^(/)?$ /domain.com/index.html [L]

# 其他路径优先匹配www.domain.com下的资源
RewriteCond %{REQUEST_URI} !^/(domain\.com|www\.domain\.com)/
RewriteCond %{DOCUMENT_ROOT}/www.domain.com/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/www.domain.com/$1 -d
RewriteRule ^(.*)$ /www.domain.com/$1 [L]

# www.domain.com下不存在的资源再 fallback 到domain.com下
RewriteCond %{REQUEST_URI} !^/(domain\.com|www\.domain\.com)/
RewriteCond %{DOCUMENT_ROOT}/domain.com/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/domain.com/$1 -d
RewriteRule ^(.*)$ /domain.com/$1 [L]

规则逻辑说明

  • 第一部分的重定向规则:只要访问路径开头是www.domain.com/或者domain.com/,都会自动301重定向到去掉前缀的路径,完全符合你要求的URL全程不显示子文件夹的需求,不管是用户手动输入还是页面链接带了前缀,都会自动清理
  • 首页规则:单独处理根路径请求,直接映射到domain.com目录下的首页,和你之前的实现逻辑一致
  • 非首页路径优先匹配www子目录:因为原站除了首页外所有内容都在www.domain.com下,所以优先去这个目录查找对应资源,存在就直接返回,不会暴露路径
  • 最后加fallback规则:如果www子目录找不到对应资源,再去domain.com目录查找,避免漏掉零散的非首页资源

测试注意事项

测试前先清理浏览器缓存,之前的301重定向可能会被缓存影响测试结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:24:03