Nochmals Umleitungen NGINX?
in der NGINX "virtual-server".conf
habe ich folgende Umleitungen drinn:
http://muster.ch auf
https://www.muster.ch/content/index.htm
http://www.muster.ch auf
https://www.muster.ch/content/index.htm
https://muster.ch auf
https://www.muster.ch/content/index.htm
https://www.muster.ch auf
https://www.muster.ch/content/index.htm
Für die ersten drei, eigener virtual-Server mit rewrite.
Mit dem letzten klemmt es
location / {
...
if ($request_uri !~ "^/content"){
rewrite ^(.*)$ https://www.muster.ch/content$1 permanent;
}
rewrite /(.*)\.htm$ /cmscma/parser.php?file=/$1.htm;
}
Das funktioniert, hat aber den Nachteil dass alle Zugriffe aufs www-server-root-verzeichnis auf ".../content/" umgeleitet werden.
Somit finden die Suchmaschinen robots.txt, sitemap-index.xml, sitemap.xml, etc.. nicht mehr.
Irgendwie muss ich da ändern:
if ($request_uri !~ "^/content"){
ich möchte nun auf Muster "muster.ch" und "muster.ch/" und "muster.ch/index.htm" prüfen und dann weiterleiten.
Jetzt bin ich wieder an meinem REGEX Problem, wie formulieren/machen.
Besten Dank wenn mir nochmals jemand unter die Arme greift.
1 Antwort
du kannst in deiner NGINX-Konfiguration eine Ausnahme für die Dateien wie robots.txt und sitemap.xml hinzufügen, sodass diese nicht in das /content-Verzeichnis umgeleitet werden.
ungefähr so
location / {
if ($request_uri !~ "^/content"
&& $request_uri !~ "^/robots.txt"
&& $request_uri !~ "^/sitemap.xml"
&& $request_uri !~ "^/sitemap-index.xml") {
rewrite ^(.*)$ https://www.muster.ch/content$1 permanent;
}
rewrite /(.*)\.htm$ /cmscma/parser.php?file=/$1.htm;
location = /robots.txt { }
location = /sitemap.xml { }
location = /sitemap-index.xml { }
}
Da bekomme ich nach dem Neustart vom NGINX immer folgenden Fehler:
Sep 24 15:21:34 raspi1 nginx[12134]: nginx: [emerg] invalid condition "($request_uri" in /opt/nginx/conf/sites-enabled/muster:45
Ich habe dann die verschiedenen Ausdrücke auch noch eingeklammert, geht auch nicht (siehe unten)
location / {
if (($request_uri !~ "^/content")
&& ($request_uri !~ "^/robots.txt")
&& ($request_uri !~ "^/sitemap.xml")
&& ($request_uri !~ "^/sitemap-index.xml")) {
rewrite ^(.*)$ https://www.muster.ch/content$1 permanent;
}
Also bis jetzt läuft die ODER Verknüpfung nicht.