¿Cómo redirigir a https para múltiples subdominios configurados como ServerAlias?

¿Cómo redirigir a https para múltiples subdominios configurados como ServerAlias?

He instalado SSL a través de certbot y se puede acceder a todos mis sitios a través de SSL.

Sin embargo, cuando se utiliza http en la URL del navegador, solo la primera de abajo se redirige a https. Los demás no son redirigidos a https y continúan en http.

  1. midominio.com
  2. xx.midominio.com
  3. yy.midominio.com

Para el puerto 80, a continuación se muestra el contenido de la lógica de reescritura en el archivo virtualhosts:

RewriteEngine on
RewriteCond %{SERVER_NAME} =mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Para el puerto 443, a continuación se muestran los contenidos de los hosts virtuales:

DocumentRoot /var/www/html
ServerName mydomain.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias xx.mydomain.com
ServerAlias yy.mydomain.com
SSLCertificateFile /etc/letsencrypt/live/yy.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yy.mydomain.com/privkey.pem

Como verá, el dominio y los subdominios apuntan al mismo directorio raíz del documento.

¿Cómo hacer que todas las URL enumeradas en los puntos anteriores redirijan a https cuando se ingresa http en el navegador? No estoy seguro de qué es exactamente lo que hay que cambiar en la lógica de reescritura del puerto 80 para que esto funcione para subdominios configurados como alias de servidor.

Respuesta1

Su configuración es condicional (a que la solicitud se realice a =example.com), por lo que RewriteRule no redirigirá las solicitudes a xx.example.com.

Tu también puedes

  • mejorar esa condición (cuando todavía desea redirigir solo para (sub)dominios específicos). No muy bonito pero por ejemplo:

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com     [OR]
    RewriteCond %{SERVER_NAME} =xx.example.com  [OR]
    RewriteCond %{SERVER_NAME} =yy.example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    
  • elimine la condición por completo (y redirija todo a https (con el riesgo de que también redirija new-subdomain.example.coma https para el cual aún no tiene un certificado válido)

    RewriteEngine on
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    

información relacionada