You need to enable JavaScript to run this app. .htaccess配置失效:需实现http跳https、去尾斜杠、无.html后缀访问
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置失效:需实现http跳https、去尾斜杠、无.html后缀访问

现有配置的核心问题
  • 规则执行顺序完全错位:先跑去斜杠跳转、再跑HTTPS强制跳转,会让每个访问请求多走一次冗余301,甚至可能因为跳转节点不连续触发浏览器重定向循环报错
  • 跳转规则里硬编码域名和动态主机变量混用,一旦访问路径和规则预期不匹配,直接触发死循环
  • .html后缀补全规则没有加真实文件、目录的校验,遇到已经存在的静态资源请求会被错误重写,直接出404
  • 重复写了两次RewriteEngine On,不仅冗余,部分Apache版本会因为重复指令重置规则栈,打乱所有规则的执行顺序
修正后三规则并行生效的完整.htaccess配置
<IfModule mod_rewrite.c>
RewriteEngine On
# 声明站点部署根路径,避免子目录场景下路径解析错误
RewriteBase /

# 规则1:强制所有HTTP请求跳转到HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.gasstudio.co.uk/$1 [R=301,L]

# 规则2:非目录类URL自动去除末尾斜杠,301永久跳转
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ https://www.gasstudio.co.uk/$1 [R=301,L]

# 规则3:自动匹配无.html后缀的请求,映射到对应实际页面文件
# 跳过已经匹配到真实文件/目录的请求,避免重写循环
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{2,4}$
RewriteRule ^(.*)$ $1.html [L]
</IfModule>
配置实际执行逻辑
  • 所有带301状态码的跳转规则全部放在最前端,确保用户第一次请求就被导向最终的标准URL(HTTPS、无多余斜杠),没有冗余跳转链路
  • 去斜杠规则严格判断「当前请求路径不是服务器上真实存在的目录」,不会误伤本来就需要带斜杠的目录类访问(比如静态资源存储目录、文档索引目录这类场景)
  • .html映射属于服务器内部重写,全程不会修改用户浏览器地址栏显示的URL;加了真实文件校验后,遇到已经能直接匹配的资源就会跳过重写,从根源避免循环
  • 所有301跳转统一指向主域名,不会因为用户输入不同主机头(比如裸域名、http开头的域名)出现跨站跳转问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 16:24:01