ServerAlias として設定された複数のサブドメインを https にリダイレクトするにはどうすればよいですか?

ServerAlias として設定された複数のサブドメインを https にリダイレクトするにはどうすればよいですか?

certbot 経由で SSL をインストールしたので、すべてのサイトに SSL 経由でアクセスできます。

ただし、ブラウザの URL に http が使用されている場合、以下の最初の URL のみが https にリダイレクトされます。他の URL は https にリダイレクトされず、http のままになります。

  1. マイドメイン
  2. xx.mydomain.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

ご覧のとおり、ドメインとサブドメインは同じドキュメント ルート ディレクトリを指しています。

ブラウザに http が入力されたときに、上記のポイントにリストされているすべての URL を https にリダイレクトするにはどうすればよいですか? サーバー エイリアスとして構成されたサブドメインでこれを機能させるには、ポート 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]
    
  • new-subdomain.example.com条件を完全に削除し、すべてを https にリダイレクトします (有効な証明書がまだない https にもリダイレクトされるリスクがあります)

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

関連情報