Instalei SSL via certbot e todos os meus sites podem ser acessados via SSL.
No entanto, quando http é usado no URL do navegador, apenas o 1º abaixo é redirecionado para https. Os outros não são redirecionados para https e continuam em http.
- meudomínio.com
- xx.meudomínio.com
- aa.meudomínio.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.
Sua configuração é condicional (na solicitação feita para
=example.com
) portanto, o RewriteRule não redirecionará solicitações paraxx.example.com
.Você também pode
melhorar essa condição (quando você ainda deseja redirecionar apenas para domínios (sub-) específicos). Não muito bonito, mas por exemplo:
remova a condição completamente (e redirecione tudo para https (com o risco de você também redirecionar
new-subdomain.example.com
para https para o qual você ainda não possui um certificado válido)