如何通过.htaccess将指定文件夹下的任意URL重定向到固定地址?
解决/folder/下所有页面的301重定向问题
正确的.htaccess配置方案
推荐以下两种有效配置,任选其一即可:
方案一:使用mod_rewrite(适配更多复杂场景)
RewriteEngine On RewriteRule ^folder/.*$ https://www.mynewdomain.com/id/2176 [R=301,L]
- 正则
^folder/.*$会匹配所有以folder/开头的路径(包括/folder/123.html、/folder/sub/abc等任意子页面) [R=301,L]标记:R=301表示永久重定向,L表示执行完这条规则后停止后续规则处理
方案二:使用mod_alias(语法更简洁)
RedirectMatch 301 ^/folder/.*$ https://www.mynewdomain.com/id/2176
- 正则
^/folder/.*$直接匹配所有/folder/开头的URL路径,自动完成重定向
你之前配置无效的原因
- 第一条规则
RedirectMatch 301 ^/folder$ ...:仅匹配精确的/folder路径,不包含/folder/或/folder/xxx这类带后缀/子路径的URL - 第二条规则
RewriteRule /folder/ ...:在.htaccess中,RewriteRule的匹配路径无需开头的/,且未匹配/folder/之后的内容,同时缺少[R=301,L]标记,导致重定向不生效 - 第三条规则
RewriteRule ^/folder(/)?$ ...:仅匹配/folder或/folder/两个精确路径,无法覆盖/folder/下的子页面
测试注意事项
- 测试阶段可以先用
R=302临时重定向,确认生效后再改为R=301,避免浏览器缓存错误规则 - 测试前务必清除浏览器缓存,或使用隐私模式访问,防止旧缓存影响结果
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

