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

.htaccess配置:子目录跳转根目录 排除两个指定子文件夹

子目录.htaccess重定向可行配置

你需要将以下代码完整写入/subfolder/目录下的.htaccess文件即可实现需求:

RewriteEngine On
Options +FollowSymLinks

# 排除folder1、folder2目录(兼容带/不带尾斜杠、目录下所有子路径)
RewriteCond %{REQUEST_URI} ^/subfolder/folder1(/|$) [NC,OR]
RewriteCond %{REQUEST_URI} ^/subfolder/folder2(/|$) [NC]
RewriteRule ^ - [L]

# 其余所有当前子目录下的请求 301永久重定向到根域名
RewriteRule ^ https://www.example.com/ [R=301,L,QSA]
规则逻辑说明
  • 前3行是排除逻辑:匹配到访问folder1、folder2本身,或是这两个目录下任意文件、子目录的请求时,直接终止后续重写规则,不做跳转。(/|$)的写法是为了避免出现类似/subfolder/folder1abc这类路径被误判为folder1目录的问题,NC标记是不区分大小写匹配。
  • 最后一行重定向规则:因为.htaccess放在/subfolder目录内,规则匹配时会自动剥离当前目录的/subfolder前缀,直接用^就能匹配到当前目录下所有请求,统一跳转到根地址,QSA标记会保留原请求携带的查询参数,不需要可以删除。
生效注意事项
  • 测试阶段请先把规则里的R=301改成R=302(临时重定向),避免301永久重定向被浏览器强制缓存,导致调试时看不到最新效果,确认规则完全符合预期后再改回R=301。
  • 请确保站点Apache配置中对应目录的AllowOverride设置为All或是包含FileInfo权限,否则.htaccess中的重写规则不会被服务器读取执行。
之前测试规则失效原因
  • 第一版规则的重定向目标是/$1,本质是把/subfolder下的路径平移到根目录下(比如/subfolder/a.html会跳转到/a.html),不是统一跳转到根域名首页,不符合需求。
  • 第二版规则的排除条件没有兼容不带尾斜杠的目录访问路径,同时没有给排除规则加L标记终止流程,导致排除逻辑被后面的重定向规则覆盖,无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:33:29