This is my code on /etc/apache2/sites-enabled/dynamic-vhosts.conf:
<VirtualHost *:80> DocumentRoot "/var/www/SITE.com.br" ServerName SITE.com.br RewriteEngine On RewriteCond %{REMOTE_ADDR} 10.10.10.[0-255] RewriteRule ^(.+)$ https://SITE.com.br/ [R=301]
My problem is, in some cases it’s force to HTTPS, but in other cases it’s not. Example: On some desktops browsers, it’s redirect to HTTPS, but on mobile browsers or on others desktops/servers browsers, it’s not.
Anybody can help me?
Advertisement
Answer
Try this, but I am not so sure that this will fix your issue:
<VirtualHost *:80> DocumentRoot "/var/www/SITE.com.br" ServerName SITE.com.br RewriteEngine On RewriteCond %{REMOTE_ADDR} ^10.10.10. RewriteRule ^(.+)$ https://SITE.com.br/ [R=301]
I am not really sure why you are using RewriteCond %{REMOTE_ADDR}
, do you know that it actually makes the HTTP to HTTPS redirect happen only on remote IP addresses (the IP address of the client) from 10.10.10.0 to 10.10.10.255? And there is a very huge possibility that the mobile phones have IP addresses that are outside 10.10.10, like 10.10.11.123!
If you want to redirect to HTTPS for any IP address, try this:
<VirtualHost *:80> DocumentRoot "/var/www/SITE.com.br" ServerName SITE.com.br RewriteEngine On RewriteRule ^(.+)$ https://SITE.com.br/ [R=301]
You can also simplify ^(.+)$
in RewriteRule ^(.+)$ https://SITE.com.br/ [R=301]
to RewriteRule ^ https://SITE.com.br/ [R=301]
. Since ‘^(.+)’ means “match and store everything that is in the current line”, it uses more memory (RAM), ^
doesn’t really store anything in memory.