Auf meinem Apache-Server möchte ich alle eingehenden http-Anforderungen an die entsprechende https-Anforderung umleiten können. Der Haken ist, dass ich dies für meinen virtuellen Standardhost tun möchte, ohne das anzugeben, ServerName
und dass die Umleitung mit dem in der Anforderungs-URL angegebenen Servernamen funktioniert. Ich hoffe auf so etwas:
NameVirtualHost *:80
<VirtualHost *:80>
RedirectPermanent / https://%{SERVER_NAME}/
...
</VirtualHost>
Ist dies mit möglich Redirect
oder muss ich darauf zurückgreifen Rewrite
?
sudo a2enmod rewrite
Dies würde alle Konfigurationsfehler von configtest / apache2 stoppen. (Was ein Aktien-Setup erhalten würde, vorausgesetzt, Sie verwenden die oben angegebenen vhost-Ergänzungen)http://mywebiste.com
->https://mywebiste.com
). Was ist, wenn ich auch Subdomaind (http://blog.mywebiste.com
->https://blog.mywebiste.com
) habe?https://%{HTTP_HOST}/$1 [R=301,L]
/
, aber in einer htaccess-Datei wird das/
Präfix entfernt. Wenn die Regel in einer htaccess-Datei wäre, würden wir in der Tat eine/
vor dem$1
Beides funktioniert gut. Gemäß den Apache-Dokumenten sollten Sie jedoch die Verwendung
mod_rewrite
für einfache Umleitungen vermeiden undRedirect
stattdessen verwenden. Ihnen zufolge sollten Sie also vorzugsweise Folgendes tun:Das erste
/
nachRedirect
ist die URL, der zweite Teil ist, wo es umgeleitet werden sollte.Sie können es auch verwenden, um URLs in eine Subdomain umzuleiten:
Redirect /one/ http://one.example.com/
quelle
Dies ist der vollständige Weg, um auch nicht benötigte Weiterleitungen wegzulassen;)
Diese Regeln sollen in .htaccess-Dateien verwendet werden, da eine RewriteRule in einem VirtualHost-Eintrag *: 80 keine Bedingungen erfordert.
Erklärungen :
==> überhaupt den Motor aktivieren
==> Übereinstimmung bei Nicht-https- Verbindungen oder (das Nicht-Setzen von [ODER] würde ein implizites UND verursachen!)
==> Übereinstimmung bei weitergeleiteten Verbindungen (Proxy, Loadbalancer usw.) ohne https
==> Wenn eine der beiden Bedingungen übereinstimmt, schreiben Sie die gesamte URL neu und senden Sie eine 301, damit der Client dies lernt (manche tun es, andere nicht) und das L für die letzte Regel.
quelle
RewriteRule
wahrscheinlich nie übereinstimmen werden. Ich bin mir ziemlich sicher, dass Sie den Schrägstrich fallen lassen möchten:RewriteRule ^(.*) …
<VirtualHost *:80>
,%{SERVER_PORT}
wird er niemals 443 sein, sodass die Bedingung immer übereinstimmt.sudo a2enmod rewrite
Dies würde alle Konfigurationsfehler von configtest / apache2 stoppen. (Was ein Lager-Setup erhalten würde, vorausgesetzt, Sie verwenden die oben angegebenen vhost-Ergänzungen)Ich habe mkcert verwendet , um unendliche * .dev.net-Subdomains & localhost mit gültigen HTTPS / SSL-Zertifikaten zu erstellen (Windows 10 XAMPP & Linux Debian 10 Apache2).
Ich erstelle die Zertifikate unter Windows mit mkcert v1.4.0 (führe CMD als Administrator aus):
Dies erstellt in Windows 10 diese Dateien (ich werde es zuerst in Windows 10 XAMPP installieren)
Überschreiben Sie die XAMPP-Standardzertifikate:
Aktivieren Sie jetzt in Apache2 für Debian 10 SSL & vhost_alias
Fügen Sie für vhost_alias diese Apache2-Konfiguration hinzu:
Mit diesem Inhalt:
Fügen Sie die Site hinzu:
Kopieren Sie die Zertifikate per SSH nach / root / mkcert und lassen Sie die Debian-Zertifikate überschreiben:
Bearbeiten Sie die SSL-Konfiguration
Bearbeiten Sie zu Beginn die Datei mit folgendem Inhalt:
...
Letzter Neustart:
HINWEIS: Vergessen Sie nicht, die Ordner für Ihre Subdomains in / var / www / html / zu erstellen
quelle