强制域的HTTPS和WWW以及子域HTACCESS的HTTPS

时间:2014-01-03 01:21:21

标签: .htaccess http ssl https subdomain

我一直在尝试为我的网站配置此功能,但无法使用。

我习惯在我的.htaccess上使用cond来强制主域名使用www而子域名没有任何内容,但是因为我有SSL,所以我遇到了一些问题。

这是一个通配符SSL。

我需要的是强制HTTPS://主域上的WWW,以及子域上的HTTPS://。

I.E:http://www.domain.com - > https://subdomain.domain.com

那有什么规则吗? 谢谢!

EDITED

现在我像Jon一样使用

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^domain\.com\.br$ [NC]
RewriteRule ^.*$ https://www.domain.com.br%{REQUEST_URI} [R,L]
# ---------- #
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com\.br$ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.|)(.*)$ [NC]
RewriteRule ^.*$ https://%1%{REQUEST_URI} [R,L]

问题是,当我在主域上输入HTTP://有或没有WWW时,ir强制HTTPS://和WWW,这没关系...

但是在子域名中,当我键入HTTP时,它不会强制HTTPS,它只会重定向到主域...如果我将.htaccess放在子域的目录中,则不会发生这种情况。 在我的子域dir中有.htaccess,如果我输入HTTP,它会强制HTTPS正常...

有什么建议吗?

1 个答案:

答案 0 :(得分:6)

尝试:

RewriteEngine On 

# for subdomains
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.|)(.*)$ [NC]
RewriteRule ^.*$ https://%1%{REQUEST_URI} [R,L]

# for main domains
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com%{REQUEST_URI} [R,L]