htaccess配置:实现根域名与index.php重定向至/newhp的方法
.htaccess 指定路径重定向配置方案
前置准备
- 确认待修改的
.htaccess文件位于网站根目录(和待跳转的newhp文件夹、index.php文件处于同一层级) - 确认Apache已正常启用
mod_rewrite模块,未开启该模块的场景下所有重写规则都不会生效
完整可直接复用的配置规则
将以下规则添加到.htaccess文件的最顶部位置,即可同时满足两个重定向需求:
# 强制开启重写引擎,必须放在所有重写类规则的最前方 RewriteEngine On # 匹配根域名访问场景(如example.com / example.com/),301永久重定向到/newhp RewriteRule ^$ /newhp [R=301,L] # 匹配根目录下index.php的直接访问场景,301永久重定向到/newhp RewriteRule ^index\.php$ /newhp [R=301,L]
临时调试场景可将规则内的
R=301替换为R=302,避免浏览器强缓存带来的调试阻碍
之前尝试方案失效的核心原因
- 第一类测试方案仅添加
RewriteRule ^$ /newhp [L]缺少R跳转标记,本质是服务器内部内容转发,不会触发浏览器层面的地址跳转,和常规预期的重定向效果不一致,还容易和现有根目录默认页配置产生冲突 - 第二类测试方案
RedirectMatch ^/$ /newhp属于mod_alias模块规则,存在两个明显缺陷:一是规则仅能匹配根路径的访问,无法覆盖index.php的跳转需求;二是如果现有.htaccess内存在同路径的拦截规则,会因规则加载顺序优先执行旧逻辑,导致新规则被覆盖不生效
生效排查注意事项
- 如果添加规则后仍未跳转,检查现有.htaccess内是否存在针对根路径、index.php的已有重写逻辑,将这些旧规则调整到新加的两条规则的下方,避免新规则被提前拦截
- 重定向规则内统一使用站点相对路径(如
/newhp),不要拼接完整域名写死跳转地址,避免触发跨域跳转错误 - 本地测试前先清空浏览器缓存,301永久重定向会被浏览器长期强缓存,之前测试产生的错误跳转状态未清除时,会一直无法加载新规则
内容的提问来源于stack exchange,提问作者user15482398
相关产品推荐
相关产品推荐

