it-swarm.com.de

Wie verhindere ich, dass eine Umschreiberegel nur für eine Unterdomäne ausgeführt wird?

In der Root-Ebene .htaccess habe ich eine Bedingung hinzugefügt, um HTTP-Anfragen als HTTPS umzuschreiben:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}

Dies gilt für die Hauptdomäne und alle Unterdomänen. Leider ist in einer der Unterdomänen noch etwas zu tun, damit es mit HTTPS funktioniert. Daher möchte ich etwas in diese einfügen . Htaccess-Datei zum Rückgängigmachen der geerbten Umschreiberegeln.

Die Datei muss noch viele andere Konfigurationen von der übergeordneten Domäne erben, sodass nur diese eine Umschreiberegel rückgängig gemacht werden muss.

Wie kann ich diese Umschreiberegel für eine bestimmte Unterdomäne deaktivieren?

1
Itai

Wenn die Unterdomäne auf ein Unterverzeichnis außerhalb des Dokumentstamms der Hauptdomäne verweist, können Sie einfach eine RewriteEngine On -Direktive in die .htaccess -Datei dieses Unterverzeichnisses einfügen. Dies setzt jedoch all die mod_rewrite-Direktiven in der übergeordneten .htaccess -Datei außer Kraft, was möglicherweise nicht wünschenswert ist (obwohl "andere Konfiguration aus der übergeordneten Domäne" will ist vererbt).

Wenn die übergeordnete .htaccess andere mod_rewrite-Anweisungen enthält, die Sie ausführen möchten, müssen Sie dieser HTTP-zu-HTTPS-Regel in der übergeordneten .htaccess -Datei eine Bedingung hinzufügen, die die Unterdomäne ausdrücklich ausschließt.

Zum Beispiel:

RewriteEngine On
RewriteCond %{HTTP_Host} !^subdomain\.
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [R=302,L]

Was sagt ... wenn Hostnichtsubdomain. startet und nicht https ist, dann ...

Normalerweise benötigen Sie das L -Flag für Umleitungen, damit die Verarbeitung in der Datei nicht fortgesetzt wird (wenn Sie über mehr mod_rewrite-Anweisungen verfügen). Außerdem sollte dieser Shop normalerweise eine (permanente) 301-Weiterleitung sein. Wenn dies der Fall ist, ändern Sie den 302 in 301, wenn Sie sicher sind, dass alles in Ordnung ist. Obwohl vielleicht am besten als 302 übrig, während dies entwickelt wird.

Es ist auch nicht erforderlich, den URL-Pfad (dh (.*)) zu erfassen, wenn dieser nicht in den Anweisungen RewriteRuleSubstitution (oder RewriteCond verwendet wird.).

1
MrWhite