How can I force HTTPS on my website? I tried the solution from this answer, but for some reason I get redirected to the parent directory when I visit the index page by clicking on a link (it worked fine before adding those lines of code in .htaccess). Also, when I try to visit my website using HTTP, it lets me do it. What am I missing?
            Asked
            
        
        
            Active
            
        
            Viewed 53 times
        
    0
            
            
        - 
                    2Sounds like you have an issue with how a trailing or missing trailing slash is handled by a) that answer and b) your setup. – arkascha Jun 06 '17 at 16:25
- 
                    1Add the contents of your `.htaccess` file to your question. "I get redirected to the parent directory when I visit the index page" / "when I try to visit my website using HTTP, it lets me do it" - do you get redirected or not? – MrWhite Jun 06 '17 at 16:55
1 Answers
1
            
            
        With Apache, you have several alternatives - including .htaccess.
Look here:
Per the documentation, your best bet is to use a Redirect directive inside the non-secureVirtualHost:
NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   DocumentRoot /usr/local/apache2/htdocs
   Redirect permanent /secure https://mysite.example.com/secure
</VirtualHost>
<VirtualHost _default_:443>
   ServerName mysite.example.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>
Here is an .htaccess example, from the same link:
 Redirect permanent /login https://mysite.example.com/login
Finally, look here for additional troubleshooting tips (for example, forgetting 'NameVirtualHost *:443' to enable Named virtual hosting for port 443):
Why might Apache ignore a virtual host with a ServerName matching the requested URL?
 
    
    
        paulsm4
        
- 114,292
- 17
- 138
- 190
- 
                    If I use `Redirect permanent /login https://mysite.example.com/login`, it gives me this error: `ERR_TOO_MANY_REDIRECTS`. Also, I'm using altervista.org to host my website, so I don't know where the exact files are located at. – sgrontflix Jun 06 '17 at 16:40
- 
                    Not sure why that article appears to suggest using `Redirect` in `.htaccess` to perform the HTTP to HTTPS redirect - that will indeed result in a redirect loop (unless the destination URL is a different server, which is unlikely)?! (Yes, `Redirect` can be used in `.htaccess`, but not for this purpose.) If you are doing this in `.htaccess` then you will _need_ to use mod_rewrite as you will _need_ to be able to check whether the current request is HTTP or already HTTPS. – MrWhite Jun 06 '17 at 17:06
- 
                    @user82217 I followed the second example from [this](https://wiki.apache.org/httpd/RewriteHTTPToHTTPS) link, but it doesn't seem to work either. Any suggestions? – sgrontflix Jun 06 '17 at 19:11
