Redirect to https not working if used with out www

January 30, 2015 6.1k views

I'm using Apache 2.4.7. on Ubuntu 14.04 LTS.
Redirects to https work for all cases (eg. http://www.tripleaf.com goes to https)

However for one case it does not work: http://tripleaf.com or http://tripleaf.com/ does not redirect to https site but shows the directory listing. Please advice.

I also tried the answer at https://www.digitalocean.com/community/questions/change-default-http-to-https but same result.

My .htaccess is:

<IfModule mod_rewrite.c>
RewriteEngine on

# This checks to make sure the connection is not already HTTPS
RewriteCond %{HTTPS} !=on

# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e. http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf
# or .htaccess context

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

#RewriteCond %{HTTPS} off
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule> 
2 Answers

I have had success just using:

#redirect www to website root
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#force https 
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • This is what I get using your code:

    Error code: ERR_TOO_MANY_REDIRECTS
    

    Maybe because I'm using Serverpilot?

Probably if Serverpilot comes with its own set of redirects

Have another answer? Share your knowledge.