Redirect - Ausnahme definieren in Htaccess
Hallo!
Ich habe eine Frage zur Umleitung auf eine andere Domain mit Ausnahme bestimmter Verzeichnisse.
Das Thema wurde bereits in einem anderen Beitrag behandelt. Nun habe ich eine Frage dazu:
Der folgende Code sollte alle Anfragen außer bestimmte Verzeichnisse auf eine andere Domain umleiten.
Allerdings werden hier die Verzeichnisse auch umgeleitet.
Nun meine Frage was passt hier nicht?
Wenn ich durch ersetze funktioniert die Außnahmenregelung, aber ist dieser Code auch korrekt.
Habe leider zu wenig Erfahrung damit.
lg
dodo-r
Ich habe eine Frage zur Umleitung auf eine andere Domain mit Ausnahme bestimmter Verzeichnisse.
Das Thema wurde bereits in einem anderen Beitrag behandelt. Nun habe ich eine Frage dazu:
Der folgende Code sollte alle Anfragen außer bestimmte Verzeichnisse auf eine andere Domain umleiten.
RewriteEngine On
RewriteCond %{REQUEST_URI} "!^/(2001|2002)(/.*)?$" [NC,OR]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteRule .* http://www.domain2.at [L,R=301]
Allerdings werden hier die Verzeichnisse auch umgeleitet.
Nun meine Frage was passt hier nicht?
Wenn ich
RewriteCond %{REQUEST_URI} "!^(2001|2002)/?" [NC,OR]
RewriteCond %{REQUEST_URI} !^/(2001|2002)(/.*)?
Habe leider zu wenig Erfahrung damit.
lg
dodo-r
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 321255
Url: https://administrator.de/contentid/321255
Ausgedruckt am: 19.12.2024 um 13:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo
2. Möglicherweise die Anführungszeichen der ersten Condition Wo kommt diese Version eigentlich her ?
3. Das Fehlen von
Diesen Teil zu löschen verursacht hier also nur noch mehr Probleme als welche zu lösen.
Die zweite Condition sollte eigentlich schon passen, nur das hier mindestens das
Eine "Mischung" aus beiden sollte funktionieren:
UNGETESTET
Das Dollar-Sign am Ende kann man glaube ich weglassen weil der * sich gierig verhält. Schaden sollte es aber auch nicht
~Arano
Allerdings werden hier die Verzeichnisse auch umgeleitet.
Welche denn ? Die ausgenommenen (2001 und 2002) ? Die die nicht existieren (!-d) ? Oder welche ? Nun meine Frage was passt hier nicht?
1. Deine Schilderung allgemein2. Möglicherweise die Anführungszeichen der ersten Condition Wo kommt diese Version eigentlich her ?
3. Das Fehlen von
[NC,OR]
der zweiten Condition.[NC,OR]
deren Bedeutung kann man eigentlich schnell in Erfahrung bringen:NC
= No Case / Groß-/Kleinschreibung nicht unterscheidenOR
= Oder / Verknüpft die Condiotion. In deinem Fall muss also eine der drei Condition zutreffen damit der Rewrite erfolgt.Diesen Teil zu löschen verursacht hier also nur noch mehr Probleme als welche zu lösen.
Die zweite Condition sollte eigentlich schon passen, nur das hier mindestens das
OR
fehlt. Das NC
kann hier wegfallen weil die Verzeichnisnamen aus Ziffern bestehen. Das OR
jedoch ist erforderlich weil du ja möchtest, das mindestens eine dieser Condition zutreffen muss. OHNE das OR
müsste es eine AND
Verknüpfung sein (OR
ist aber mächtiger): Die erste Cond und eine der beiden folgenden MÜSSEN zutreffen. A&( B|C )Eine "Mischung" aus beiden sollte funktionieren:
UNGETESTET
RewriteCond %{REQUEST_URI} !^/(2001|2002)(/.*)?$ [NC,OR]
Das Dollar-Sign am Ende kann man glaube ich weglassen weil der * sich gierig verhält. Schaden sollte es aber auch nicht
%{REQUEST_URI
sollte den gesamten Teil nach der Domain zurückliefern:https://administrator.de/user/arano/
%{HTTP_HOST} = www.administrator.de
%{REQUEST_URI} = /user/arano/
~Arano
Hey,
Ich hatte ja gerade jemanden drauf hingewiesen das ein Problembeschreibung besser ausführlich zu schrieben ist: Was ist das Ziel, Wie soll das erreicht werden, Wann passiert der Fehler, Was ist der Fehler, Was sollte statt dessen passieren usw. und sofort.
Jetzt kann ich mir an die eigene Nase fassen -.-
All das seht hier nur Teilweise oder gar nicht.
Ausgehend von deiner Fragestellung im vorherigem Beitrag: Weiterleitung Redirect Htaccess - Ausnahme Ist die Lösung falsch !
In deiner Initialfrage erwähnst du ZWEI Zieladressen, deine Lösung enthält aber nur EINE... (2==1)=FALSE, hier kann doch also etwas nicht stimmen.
Und ja, meine Antwort von Gestern ist auch Grütze.
Da du eigentlich auf 2 URL (bedingt) weiterleiten möchtest, benötigst du auch zwei Rules.
Achtung, Rule 1 ist mit 2 verkettet [C=Chain/Kette]
Alles was nicht mit 2001|2002 beginnt wird "normal" auf http://arano/... umgeleitet.
Durch [C] wird aber zusätzlich auch die folgende Rule getestet und falls die REQUEST_URI weder ein lokales Verzeichnis ist, noch eine lokale Datei dann wird nochmal weitergeleitet aber nur auf die Hauptdomain: http://arano.
! Die Datei "404.html" existiert in keinem Fall !
Bzgl. der doppelten Anführungszeichen:
Im Apache Wiki und der Doku sind alle Parameter tatsächlich in dopl.Anführungszeichen.
Bei so ziemlich allen Beispielen dich in noch gesucht habe werden die nicht verwendet - darum kam mir das wohl auch so komisch vor.
Jedenfalls funktioniert das hier in beiden Fällen und als gemischte Variante.
~Arano
Ich hatte ja gerade jemanden drauf hingewiesen das ein Problembeschreibung besser ausführlich zu schrieben ist: Was ist das Ziel, Wie soll das erreicht werden, Wann passiert der Fehler, Was ist der Fehler, Was sollte statt dessen passieren usw. und sofort.
Jetzt kann ich mir an die eigene Nase fassen -.-
All das seht hier nur Teilweise oder gar nicht.
Ausgehend von deiner Fragestellung im vorherigem Beitrag: Weiterleitung Redirect Htaccess - Ausnahme Ist die Lösung falsch !
In deiner Initialfrage erwähnst du ZWEI Zieladressen, deine Lösung enthält aber nur EINE... (2==1)=FALSE, hier kann doch also etwas nicht stimmen.
Und ja, meine Antwort von Gestern ist auch Grütze.
Da du eigentlich auf 2 URL (bedingt) weiterleiten möchtest, benötigst du auch zwei Rules.
RewriteCond %{REQUEST_URI} !^/(2001|2002)(/.*)?$ [NC]
RewriteRule ^(.*)$ http://arano/$1 [R=301,C]
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(.*)$ http://arano [R=301,L]
Alles was nicht mit 2001|2002 beginnt wird "normal" auf http://arano/... umgeleitet.
Durch [C] wird aber zusätzlich auch die folgende Rule getestet und falls die REQUEST_URI weder ein lokales Verzeichnis ist, noch eine lokale Datei dann wird nochmal weitergeleitet aber nur auf die Hauptdomain: http://arano.
local/index.php
local/test.html
local/2001/test.html
local/2002/test.html
local/2003/test.html
Bzgl. der doppelten Anführungszeichen:
Im Apache Wiki und der Doku sind alle Parameter tatsächlich in dopl.Anführungszeichen.
Bei so ziemlich allen Beispielen dich in noch gesucht habe werden die nicht verwendet - darum kam mir das wohl auch so komisch vor.
Jedenfalls funktioniert das hier in beiden Fällen und als gemischte Variante.
~Arano