
Hola, estoy tratando de asegurarme de que solo se acceda a mi sitio web a través de https y solo a través del subdominio www. Actualmente estoy usando la siguiente configuración de host virtual de Apache:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
#..
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
<Directory /home/{apacheuser}/www>
SSLRequireSSL
Order allow,deny
Allow from all
LimitRequestBody 512000
</Directory>
#..
</VirtualHost>
Me temo que mi conocimiento de las expresiones regulares es bastante limitado y me pregunto si esta es la mejor manera de lograrlo.
gracias
Respuesta1
Solo reemplaza
# Redirect http requests to https RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L] RewriteCond %{HTTP_HOST} !=www.example.com RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
Por
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
De esta manera, todo el tráfico http se redirigirá a https, exceptohttp://ejemplo.competiciones
Luego elimine esa línea de su configuración https:
# Redirect http requests to https RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L] RewriteCond %{HTTP_HOST} !=www.example.com RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
así que sigue
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
que redireccionahttps://ejemplo.comahttps://www.ejemplo.com
Respuesta2
%{SERVER_ADDR}
podría funcionar para reescribir la IP también
editar:
Lo sentimos, no puedes usar variables en el lado derecho de la expresión.
Prueba algo como eso:
RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1
O si no lo haces de forma dinámica
RewriteCond %{SERVER_NAME} !192.168.1.1