Como redirecionar para https para vários subdomínios configurados como ServerAlias?

Como redirecionar para https para vários subdomínios configurados como ServerAlias?

Instalei SSL via certbot e todos os meus sites podem ser acessados ​​via SSL.

Porém, quando http é usado na url do navegador, apenas o primeiro abaixo é redirecionado para https. Os demais não são redirecionados para https e continuam em http.

  1. meudominio.com
  2. xx.meudominio.com
  3. aa.meudominio.com

Para a porta 80, abaixo está o conteúdo da lógica de reescrita no arquivo virtualhosts:

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

Para a porta 443, abaixo está o conteúdo dos virtualhosts:

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 você verá, o domínio e os subdomínios apontam para o mesmo diretório raiz do documento.

Como fazer com que todos os URLs listados nos pontos acima sejam redirecionados para https quando http é inserido no navegador? Não tenho certeza do que exatamente precisa ser alterado na lógica de reescrita da porta 80 para que isso funcione para subdomínios configurados como aliases de servidor.

Responder1

Sua configuração é condicional (na solicitação feita para =example.com), portanto, o RewriteRule não redirecionará solicitações para xx.example.com.

Você também pode

  • melhore essa condição (quando você ainda deseja redirecionar apenas para (sub) domínios específicos). Não é muito bonito, mas por exemplo:

    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]
    
  • remova a condição completamente (e redirecione tudo para https (com o risco de você também redirecionar new-subdomain.example.compara https para o qual ainda não possui um certificado válido)

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

informação relacionada