如何用.htaccess实现无路径保留重定向?将子文件夹及内部页面跳转至根目录
解决.htaccess将/subfolder及其子路径重定向到根目录的问题
没问题,我来帮你搞定这个重定向需求!你要的是把/subfolder以及它下面所有层级的页面都直接跳转到网站根目录,而不是映射到根目录的对应路径对吧?这可以通过Apache的mod_rewrite规则轻松实现。
核心重写规则
把这段代码放到你网站根目录的.htaccess文件里(注意不是/subfolder子目录里的那个):
RewriteEngine On # 永久重定向/subfolder及其所有子路径到根目录 RewriteRule ^subfolder(/.*)?$ / [L,R=301]
规则细节解释
让我拆解一下每个部分的作用,方便你理解:
RewriteEngine On:必须开启重写引擎,否则所有Rewrite规则都不会生效。^subfolder(/.*)?$:这是正则匹配规则:^表示匹配URL的开头subfolder就是你要定向的目标子文件夹名称(/.*)?表示匹配subfolder后面的任意内容(包括空,也就是/subfolder本身),?表示这部分是可选的$表示匹配URL的结尾
/:这是重定向的目标路径,也就是网站的根目录L:标记为「Last」,意思是处理完这条规则就停止,不会再执行后续的重写规则,避免冲突R=301:表示这是永久重定向(适合SEO场景),如果只是临时需要,可以改成R=302(临时重定向)
效果验证
设置好之后,所有符合条件的请求都会直接跳转到根目录:
- 访问
https://yourdomain.com/subfolder→ 跳转至https://yourdomain.com/ - 访问
https://yourdomain.com/subfolder/another-folder→ 跳转至https://yourdomain.com/ - 访问
https://yourdomain.com/subfolder/page.html→ 跳转至https://yourdomain.com/
注意事项
- 确保你的Apache服务器已经启用了
mod_rewrite模块(大多数主机默认开启,如果没开可以联系主机服务商或者自行配置) - 如果你的
.htaccess里已经有其他重写规则,把这条规则放在最前面,避免被其他规则覆盖导致失效 - 测试的时候可以用浏览器开发者工具的「网络」面板,查看请求的状态码是否为301,确认重定向目标正确
内容的提问来源于stack exchange,提问作者TASan
相关产品推荐
相关产品推荐

