如何编写IIS Rewrite规则实现HTTPS强制及多规范域名跳转?
搞定多规范域名的HTTPS强制跳转方案
当然可以!这种多域名+HTTPS强制跳转的需求太常见了,不管你用的是Nginx、Apache还是Cloudflare这类CDN,都能写出简洁易维护的规则来实现。下面分几种主流场景给你具体方案:
一、Nginx 配置方案(最灵活)
如果你的站点用Nginx,推荐用map指令来统一管理域名映射,避免重复写规则,后期维护也方便:
1. 先定义域名映射规则
在http块里添加这个map配置:
map $host $target_domain { default example.com; # 默认跳转主域名 example.com.au example.com.au; example.co.nz example.co.nz; example.us example.com; # 非规范域名跳转主站 www.example.com example.com; # www前缀跳转到不带www的规范域名 www.example.com.au example.com.au; www.example.co.nz example.co.nz; }
2. 通用HTTP转HTTPS+规范域名规则
创建一个通用的server块处理所有HTTP请求,直接跳转至目标地址:
server { listen 80; listen [::]:80; server_name example.com example.com.au example.co.nz example.us www.*; return 301 https://$target_domain$request_uri; }
3. HTTPS下的域名校正
如果用户直接访问了HTTPS但用了非规范域名(比如https://www.example.com),在HTTPS的server块里补充校正规则:
server { listen 443 ssl; listen [::]:443 ssl; server_name example.com example.com.au example.co.nz; # 填写你的SSL证书路径 ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; # 校正非规范HTTPS请求 if ($host != $target_domain) { return 301 https://$target_domain$request_uri; } # 站点基础配置(root、index、proxy_pass等) ... }
二、Apache 配置方案
Apache用Rewrite模块就能搞定,在.htaccess或者虚拟主机配置里添加以下规则:
RewriteEngine On # 第一步:强制所有请求走HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 第二步:校正域名(逐个处理) # www前缀跳转至裸域名 RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^www\.example\.com\.au$ [NC] RewriteRule ^(.*)$ https://example.com.au/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^www\.example\.co\.nz$ [NC] RewriteRule ^(.*)$ https://example.co.nz/$1 [L,R=301] # 非规范域名跳转至主站 RewriteCond %{HTTP_HOST} ^example\.us$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
如果想更精简,也可以用RewriteMap在Apache主配置里统一管理域名映射,但需要服务器管理员权限操作。
三、Cloudflare 页面规则方案(无需修改服务器)
如果你用Cloudflare托管域名,直接用页面规则就能一键搞定,完全不用碰服务器配置:
规则1:强制HTTPS
- 匹配URL:
*example.com/*,*example.com.au/*,*example.co.nz/*,*example.us/* - 设置:开启
Always Use HTTPS
- 匹配URL:
规则2:域名校正跳转
- 针对
www.example.com/*,设置Forwarding URL为301永久跳转至https://example.com/$1 - 针对
example.us/*,设置Forwarding URL为301永久跳转至https://example.com/$1 - 同理给
www.example.com.au/*和www.example.co.nz/*配置对应跳转规则
- 针对
几个关键注意事项
- SSL证书:确保你的证书覆盖所有用到的域名(包括非规范域名),可以选择通配符证书(如
*.example.com)或多域名SAN证书。 - 跳转类型:测试阶段用
302临时跳转验证规则,确认无误后改成301永久跳转,避免影响SEO。 - 缓存清理:测试前一定要清空浏览器缓存,旧的跳转记录会干扰测试结果。
内容的提问来源于stack exchange,提问作者eddiewould
相关产品推荐
相关产品推荐

