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

.htaccess 301重定向:排除主页的规则配置问题求助

解决301重定向排除主页的问题

嘿,我来帮你搞定这个精准重定向的需求!核心就是要让服务器识别出「主页index.html」和「其他.html页面」的区别,下面分两种最常用的Web服务器给你具体配置方案:

Nginx 配置方案

Nginx的规则匹配有优先级,我们可以利用这个特性先锁定主页,不让它被重定向,再处理其他.html页面:

  1. 先给主页单独写一条精确匹配规则(优先级最高):
location = /index.html {
    # 这里保留主页的正常配置即可,不需要重定向
    root /path/to/your/website;
    index index.html;
}
  1. 再写匹配所有其他.html页面的重定向规则:
location ~* \.html$ {
    return 301 https://www.newexample.com$request_uri;
}

说明:location = /index.html是精确匹配,优先级远高于后面的正则匹配,所以主页会被优先处理,不会触发重定向;而其他所有以.html结尾的页面都会进入第二条规则,被301重定向到新域名的对应路径。

Apache 配置方案

Apache需要借助mod_rewrite模块,先确保你的服务器已经开启了这个模块,然后在.htaccess文件或者虚拟主机配置里添加以下规则:

RewriteEngine On

# 排除主页:请求路径不是/index.html才继续执行重定向
RewriteCond %{REQUEST_URI} !^/index\.html$

# 匹配所有.html结尾的页面,重定向到新域名对应路径
RewriteRule ^(.*)\.html$ https://www.newexample.com/$1.html [R=301,L]

说明:

  • RewriteCond的!^/index\.html$表示「请求URI不等于/index.html」(!是取反,^和$确保完全匹配,避免误排除带参数的主页链接)
  • [R=301,L]里的R=301指定是永久重定向,L表示这是最后一条规则,匹配到后就不再往下执行

测试与注意事项

  • 配置完成后,记得重启Web服务器:Nginx用nginx -s reload,Apache根据系统用apache2 restart或httpd restart
  • 可以用curl -I http://www.oldexample.com/index.html测试主页,应该返回200状态码;测试其他页面比如curl -I http://www.oldexample.com/about.html,应该返回301并指向新域名的对应页面
  • 如果有其他重定向规则,记得把「排除主页」的规则放在最前面,避免被其他规则覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:05:23