I searched and found hundreds of related cases, but none exactly as what I need.
I need a combination of redirects to do the following:
Access to :
http://mysite.com -redirected to-> http://www.mysite.com
While:
https://www.mysite.com -redirected to-> https://mysite.com
For normal http site, I want to force www.
But the ssl certificate only works without www, so https should not have the www.
Thanks if anyone can help me.
The redirection from https://www.mysite.com
to https://mysite.com
can only happen after the client has made an initial request to https://www.mysite.com
.
For this initial connection to work, the server at https://www.mysite.com
must have a certificate valid for www.mysite.com
, otherwise, this connection won't even happen (and the server won't send a redirection response).
If you still want a redirection, on the same server, your server must present a certificate that is valid for the host names you want to serve. You should get a certificate with two Subject Alternative Name DNS entries: mysite.com
and www.mysite.com
; this will allow you to serve both hosts with the same certificate (and then use the rewrite rules if needed).
(You could also use Server Name Indication with two distinct certificates, if you expect the clients to support it, but that's usually for completely different host names.)
It's quite common for CAs to issue certificates that are valid for both mysite.com
and www.mysite.com
when you apply for one of the other, sometimes without an extra fee.
Put this in your .htaccess file in your non-HTTPS document root:
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R]
And this in your HTTPS document root:
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www.mysite.com$
RewriteRule ^(.*)$ https://mysite.com/$1 [R]