web-dev-qa-db-de.com

Verwendung von .htaccess zum Umleiten von http zu https für 3 Domänen cPanel

Ich habe 3 Domains. 2 sind Addon-Domains, 1 primär auf meinem cPanel. Ich weiß nicht, ob das möglich ist, aber von .htaccess wie kann ich das einrichten:

  • example1.com (primär)
  • example2.com
  • example3.com

Das möchte ich machen:

  • example1.com> HTTP zu HTTPS
  • example2.com> HTTP zu HTTPS
  • example3.com> HTTP zu HTTPS

Aus dem .htaccess auf cPanel habe ich es satt, dies zu tun:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example1.com%{REQUEST_URI} [R,L]

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example2.com%{REQUEST_URI} [R,L]

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example3.com%{REQUEST_URI} [R,L]

es hat nicht funktioniert. Bitte helfen Sie mit der Lösung.

1

cPanel ist notorisch schlecht für die Verwaltung von Weiterleitungen. (Ich hätte nicht gedacht, dass Sie HTTP-zu-HTTPS-Umleitungen nur mit cPanel erstellen können?)

Ich weiß nicht, ob das möglich ist ...

Wahrscheinlich nicht von cPanel. Dies ist jedoch in .htaccess relativ einfach (durch direktes Bearbeiten der Datei selbst). Um ehrlich zu sein, wenn in .htaccess so etwas nicht möglich ist, sollten Sie es wahrscheinlich gar nicht erst tun.

Wenn Sie einfach von HTTP zu HTTPS auf demselben Hostnamen umleiten möchten, benötigen Sie lediglich Folgendes:

RewriteEngine On

# Redirect HTTP to HTTPS on the same Host
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=302,L]

Die Servervariable HTTP_Host enthält den Hostnamen aus der Anforderung. z.B. example1.com, example2.com, www.example1.com. Beachten Sie, dass dies allein die WWW-Unterdomäne nicht kanonisiert.

Dies ist auch eine 302 (temporäre) Weiterleitung (das gleiche wie das Festlegen des R -Flag für sich selbst). Wechseln Sie nur dann zu einem 301 (permanent), wenn Sie sicher sind, dass es einwandfrei funktioniert. (301s werden vom Browser hart zwischengespeichert, was das Testen problematisch machen kann.)

Um die WWW-Unterdomäne zu kanonisieren und Nicht-WWW an WWW umzuleiten, fügen Sie eine zusätzliche Anweisung hinzu:

RewriteEngine On

# Redirect non-www to www (and HTTPS) on the same domain
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [R=302,L]

# Redirect HTTP to HTTPS on the same Host
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=302,L]

Dies setzt voraus, dass Sie keine anderen Subdomains (außer www) in diesen Domains haben.

Beachten Sie, dass dies auf den ersten Blick wie zwei Weiterleitungen aussehen kann (da es zwei separate Anweisungen gibt), dass jedoch nur eine Weiterleitung resultiert, da die erste Weiterleitung von Nicht-WWW zu WWW immer zu HTTPS weiterleitet (in diesem Fall würde die zweite Weiterleitung also niemals stattfinden) ).

Sie müssen RewriteEngine nicht mehr als einmal wiederholen.

PDATE:

Die Add-Ons befinden sich nicht im Ordner public_html ...

Wenn die Addon-Domänen nicht auf den Ordner public_html (Hauptdomänen) oder ein Unterverzeichnis des Ordners public_html verweisen, müssen Sie für jede Addon-Domäne im Dokumentstamm einen separaten .htaccess erstellen, da Sie sind völlig getrennte Einheiten. Die obigen Anweisungen würden dann für die Addon-Domains .htaccess Datei (en) funktionieren.

Wenn die Addon-Domänen jedoch auf Unterverzeichnisse außerhalb des Dokumentstamms der Hauptdomäne verweisen (eine übliche Standardeinstellung im Setup von cPanel). z.B. public_html/www.example2.com/. Dann würde die obige (einzelne) .htaccess -Datei im public_html -Ordner immer noch funktionieren ...

AUSSER Sie haben bereits zusätzliche .htaccess -Dateien (die ebenfalls mod_rewrite verwenden) in den Dokumentenstammverzeichnissen der Addon-Domäne. Dies liegt daran, dass mod_rewrite-Anweisungen nicht standardmäßig vererbt werden. Abhängig von Ihrer Konfiguration können Sie nun die Vererbung von mod_rewrite aktivieren (betonen Sie jedoch, dass dies von Ihrer Konfiguration und den bereits vorhandenen Anweisungen abhängt). Andernfalls müssen Sie diese Anweisungen in der Datei .htaccess für jede Addon-Domain duplizieren - genauso wie oben (als ob sich Ihre Addon-Domains in verschiedenen Teilen des Dateisystems befänden).

1
MrWhite

Das von Ihnen beschriebene Verhalten ist normal. Eine .htaccess-Datei gilt für den Ordner, in dem sie sich befindet, und rekursiv für Unterverzeichnisse. Ein anderer .htacess kann auch im Unterverzeichnis vorhanden sein. In diesem Fall hat er Vorrang.

In Ihrem Fall müssen Sie die Datei entweder in drei Teile aufteilen und das entsprechende Drittel in einen .htaccess im richtigen Verzeichnis einfügen, von dem aus Ihre Add-On-Domains bedient werden.

Oder Sie können in der Lage sein, die .htaccess-Datei in das übergeordnete Verzeichnis aller drei Domänen zu stellen, wenn es ein solches Verzeichnis gibt und der Server so konfiguriert ist, dass er .htaccess-Dateien über public_html liest. Auf meinem Server funktioniert das so, aber es ist möglich, dass dies von einer Konfigurationsoption abhängt.

In jedem Fall ist es am besten, den .htaccess zu teilen, da dies in Zukunft die Dinge einfacher macht, wenn Sie Server verschieben, Server für einige der Domänen wechseln usw.

1
Itai