Wie leite ich für mehrere als ServerAlias ​​konfigurierte Subdomains auf https um?

Wie leite ich für mehrere als ServerAlias ​​konfigurierte Subdomains auf https um?

Ich habe SSL über Certbot installiert und auf alle meine Sites kann über SSL zugegriffen werden.

Wenn jedoch http in der Browser-URL verwendet wird, wird nur die erste von unten auf https umgeleitet. Die anderen werden nicht auf https umgeleitet und bleiben bei http.

  1. meinedomain.com
  2. xx.meinedomain.com
  3. yy.meinedomain.com

Für Port 80 sind unten die Inhalte der Umschreiblogik in der Virtualhosts-Datei aufgeführt:

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

Für Port 443 sind unten die Inhalte der virtuellen Hosts aufgeführt:

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

Wie Sie sehen werden, verweisen die Domäne und die Subdomänen auf dasselbe Stammverzeichnis für Dokumente.

Wie kann ich dafür sorgen, dass alle in den obigen Punkten aufgeführten URLs auf https umgeleitet werden, wenn http im Browser eingegeben wird? Ich bin nicht sicher, was genau an der Umschreiblogik von Port 80 geändert werden muss, damit dies für als Server-Aliase konfigurierte Subdomänen funktioniert.

Antwort1

Ihre Konfiguration ist abhängig (von der Anforderung an =example.com), daher leitet die RewriteRule Anforderungen an nicht um xx.example.com.

Du kannst entweder

  • diesen Zustand verbessern (wenn Sie weiterhin nur für bestimmte (Sub-)Domains umleiten möchten). Nicht sehr schön, aber zum Beispiel:

    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]
    
  • Entfernen Sie die Bedingung vollständig (und leiten Sie alles auf https um (mit dem Risiko, dass Sie auch new-subdomain.example.comauf https umleiten, für das Sie noch kein gültiges Zertifikat haben)

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

verwandte Informationen