configuración del host virtual apache

configuración del host virtual apache

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

  1. 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

  1. 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

información relacionada