Forcing SSL and www in .htaccess
The first line is used to prevent internal URL's from being rewritten. That might cause different pages to be displayed, so I've removed it.
If the host is example.com
or is not requested over HTTPS, it will be rewritten to https://example.com/
. I.e., it rewrites http://example.com
, http://www.example.com
and https://example.com
to https://www.example.com
in one action.
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Documentation on mod_rewrite for Apache 2.2.
If you've subdomains like forum.example.com
, the first rule should be as is. Otherwise, you can do a negative match against www.example.com
as well.
Related videos on Youtube
Stephen
Updated on September 17, 2022Comments
-
Stephen over 1 year
I'm looking for a way to force SSL and
www
.I've been able to force both separately but together I keep running into redirection issues. The following code works when handling a URL in this format:
http://example.com
and properly redirects tohttps://www.example.com
but when the incoming URL ishttps://example.com
it will not forward tohttps://www.example.com
- Any suggestions?EDIT: it should also send
http://www.example.com
tohttps://www.example.com
.RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0 RewriteCond %{SERVER_PORT} 80 RewriteCond %{HTTP_HOST} !^www.example\.com$ RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]