我无法为无限级别的子域提供通配符SSL证书,我只有一个*.domain.tld
通配符。所以我希望将HTTPS请求重新写入HTTP请求如果 %{HTTP_HOST}
变量中存在多个子域级别。如果没有或有1个子域,则应将HTTP请求重写为HTTPS请求。
例如:
www.domain.tld -> 1 subdomain(s) HTTPS
domain.tld -> 0 subdomain(s) HTTPS
sub.domain.tld -> 1 subdomain(s) HTTPS
two.sub.domains.tld -> 2 subdomain(s) HTTP
a.b.c.domain.tld -> 3 subdomain(s) HTTP
这是我能想到的唯一一个不会让我购买通配符证书的解决方案。
答案 0 :(得分:1)
您可以使用:
RewriteEngine on
# redirect http to https with 0 or 1 subdomain
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^([^.]+\.){1,2}[^.]+$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
# redirect https to http with 2 or more subdomains
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^([^.]+\.){3,}[^.]+$ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
使用https到http重定向
无法避免SSL安全错误消息