Plesk & NGINX: Domäne umleiten und Ordner ausnehmen

Eine Domäne auf eine andere umleiten ist eigentlich ganz einfach.

Wenn man so etwas wie Plesk benutzt, schaltet man einfach den “Hosting Typ” Umleitung ein und gibt die neue Domäne an. Fertig.
Viele Domain-Registrare bieten auch eine Umleitung an, auch ohne Hosting.

Was aber, wenn man die umgeleiteten Zugriffe statistisch erfassen möchte?
Dann bleibt einem nur übrig, ein normales Hosting einzurichten und die Umleitung mit der .htaccess Datei zu konfigurieren.

Wenn man aber NGINX benutzt, so wie ich auf meinen Plesk Servern, wird die htaccess nicht verwendet, dann ist eine Änderung an der nginx Konfiguration nötig. Praktischerweise bietet Plesk eine Art Übersetzer zwischen htaccess auf nginx, was die Sache deutlich vereinfacht.

Eine htaccess Datei, die eine komplette Domäne auf eine andere Domäne umleiten würde, sähe so aus:

RewriteEngine on
RewriteRule (.*) https://www.neue-domäne.at/ [R=301,L]

Dabei werden alle Pfade abgeschnitten. D.h. www.alte-domäne.at/unterverzeichnis würde auch bei www.neue-domäne.at/ landen.

Möchte man zwei Ordner nicht umleiten, werden Ausnahmen definiert. Dann sieht das Ganze so aus:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/.well-known/
RewriteCond %{REQUEST_URI} !^/plesk-stat/
RewriteRule (.*) https://www.neue-domäne.at/ [R=301,L]

Die beiden Ausnahmen sind übrigens für die Statistiken und Let’s Encrypt gedacht. Ohne die Ausnahme für .well-know kann Let’s Encrypt die Domäne nicht verifizieren und meldet Fehler.

Wie gesagt, mit nginx kann man mit dieser htaccess Datei nichts anfangen, die funktioniert nur für Apache Webserver.

Wenn man aber in Plesk in den Einstellungen der betroffenen Domäne auf “Einstellungen für Apache & nginx” klickt, findet man über den “Zusätzlichen Einstellung für nginx” eine Option “Show .htaccess converter”.
Klickt man diese Option an und gibt die oben gezeigten htaccess Regeln ein, kommt folgende nginx Konfiguration dabei heraus:

if ($uri !~ "^/.well-known/"){
set $rule_0 1$rule_0;
}
if ($uri !~ "^/plesk-stat/"){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite /(.*) https://www.neue-domäne.at/ permanent;
}

nginx unterstützt nämlich keine Ausnahmen, aber immerhin kann man Variablen setzen. Und damit lässt sich das gleiche Verhalten realisieren.

Übringens: Die beiden Bedingungen sind UND-Verknüpft. Also Vorsicht bei Änderungen!

Lass andere teilhaben...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.