Как перенаправить на https несколько поддоменов, настроенных как ServerAlias?

Как перенаправить на https несколько поддоменов, настроенных как ServerAlias?

Я установил SSL через certbot, и ко всем моим сайтам можно получить доступ через SSL.

Однако, когда в URL браузера используется http, то только первый из них снизу перенаправляется на https. Остальные не перенаправляются на https и продолжают оставаться в http.

  1. мойдомен.com
  2. xx.мойдомен.com
  3. yy.mydomain.com

Для порта 80 ниже приведено содержимое логики перезаписи в файле virtualhosts:

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

Для порта 443 ниже приведено содержимое виртуальных хостов:

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

Как вы увидите, домен и поддомены указывают на один и тот же корневой каталог документов.

Как сделать так, чтобы все URL, перечисленные в пунктах выше, перенаправлялись на https при вводе http в браузере? Я не уверен, что именно нужно изменить в логике перезаписи порта 80, чтобы это работало для поддоменов, настроенных как псевдонимы сервера.

решение1

Ваша конфигурация является условной (запрос делается на =example.com), поэтому RewriteRule не будет перенаправлять запросы на xx.example.com.

Вы также можете

  • улучшить это состояние (когда вы все еще хотите перенаправлять только для определенных (под-)доменов). Не очень красиво, но, например:

    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]
    
  • полностью удалите условие (и перенаправьте все на https (с риском того, что вы также перенаправите new-subdomain.example.comна https, для которого у вас еще нет действующего сертификата)

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

Связанный контент