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

如何让强制HTTPS的rewrite规则不影响所有子域名

问题根源

你当前的配置存在两处全局生效的规则,导致所有子域名都会被强制升级HTTPS:

  • 末尾的RewriteCond %{HTTPS} !=on规则没有限定匹配域名,所有访问该服务的域名都会触发跳转
  • 全局设置的CSP、HSTS等响应头没有做域名限制,所有子域名的响应都会带上这些头

修改后的配置

RewriteEngine on
# 原有多域名跳转到example.kiwi的规则保留不变
RewriteCond %{HTTP_HOST} ^www\.example\.kiwi$ [OR]
RewriteCond %{HTTP_HOST} ^example\.nz$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.nz$ 
RewriteRule ^/?$ "https://example.kiwi/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.app$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.app$ 
RewriteRule ^/?$ "https://example.kiwi/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.online$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.online$ 
RewriteRule ^/?$ "https://example.kiwi/$1" [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.software$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.software$ 
RewriteRule ^/?$ "https://example.kiwi/$1" [R=301,L]

# 仅对指定域名启用HTTP转HTTPS跳转,排除其他子域名
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.(kiwi|nz|app|online|software)$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

# 仅对指定域名设置安全响应头
<If "%{HTTP_HOST} =~ /^(www\.)?example\.(kiwi|nz|app|online|software)$/">
    Header always set Content-Security-Policy "upgrade-insecure-requests;"
    Header always setifempty Strict-Transport-Security "max-age=31536000" env=HTTPS
    Header append X-Frame-Options: "SAMEORIGIN"
</If>

修改说明

  • 给HTTPS跳转规则新增了域名匹配条件,只有你列出的几个主域名和对应www子域名会触发跳转,mail等其他子域名完全不会匹配该规则
  • 用<If>指令给安全头做了域名限定,只有指定域名的响应才会携带CSP、HSTS等头,不会影响其他子域名的头配置
  • 修改后记得清理浏览器缓存再测试,避免之前的301永久重定向缓存干扰验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:09:03