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?
CodePudding user response:
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.