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

如何合并两条.htaccess的RewriteRule规则解决重定向过多问题?

合并.htaccess规则解决重定向次数过多问题

你遇到的重定向死循环是因为规则执行顺序错误、缺少域名匹配前置判断、原重定向规则协议不符合需求导致的。调整规则顺序,把外部域名/协议跳转放在最前面,内部后缀重写放在后面,再补充匹配判断条件即可解决,完整代码如下:

RewriteEngine On

# 统一跳转到https+www域名(外部跳转,优先执行)
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

# 内部重写移除.html后缀(服务器内部处理,不改变地址栏URL)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([^\.]+)$ $1.html [L]

规则说明

  • 请务必确保外部跳转规则放在内部重写规则之前,否则仍可能出现循环问题
  • 优先执行外部跳转规则,所有非https、不带www的请求会一次性跳转到目标域名,避免后续重写操作触发重复跳转
  • 内部后缀重写新增了目录排除、文件存在判断,避免把不存在的路径、真实目录路径也强行追加.html后缀
  • 原规则中第二条的http已调整为https,匹配你需要跳转至https域名的需求
  • 内部重写属于服务器层面的路径映射,不会改变浏览器地址栏的URL,也不会再次触发重定向规则匹配,完全满足移除.html后缀的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:04