staging.inyokaproject.org

Rewrite Rule für Anfängerinnen (Unterverzeichnis Redirect)

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Isabell

Anmeldungsdatum:
25. Juni 2021

Beiträge: 5

Hallo liebes Forum 😀

Ich habe mal wieder ein Problem, dessen Lösung ich nicht im Forum finde und auch nicht bei Google etc... Hoffentlich kann mir jemand helfen.

Ich möchte ein unterverzeichnis meiner Domain, auf eine andere Domain umleiten. Dafür möchte ich aber eine Rewrite Rule in der Config-Datei von 'sites_available' des Apache verwenden. Im Stammverzeichnis ein Unterverzeichnis anlegen und dort eine .htaccess reinstopfen, klappt natürlich. Aber ich würde es gerne etwas schöner lösen. Redirect in der Apache-Config.

Ich habe bereits einige RewiteCond(s) in der Datei. Funktioniert klasse:

RewriteCond %{REQUEST_FILENAME} -s [OR]
      RewriteCond %{REQUEST_FILENAME} -l [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^.*$ - [NC,L]
      RewriteRule ^.*$ index.php [NC,L]

Aber nun möchte ich zusätzlich eine Weiterleitung zu einer anderen Domain, wenn an die Hauptdomain ein Verzeichnis angehängt wird. Wenn ich also www.isashauptdomain/neuedomain eingebe, soll der Apache mich zu www.isastolleneuerdomain.de umleiten 😬

Ich las von etwa solch einer Zeile: RewriteRule ^/neuedomain(.*)$ https://www.isastolleneuerdomain$1 [L,R]

Das klappt aber leider nicht. Kann mir da, bitte bitte, jemand weiterhelfen. Vielleicht ist ja meine Reihenfolge falsch... also ob ich es nach oben oder unten, in die bestehenden Rules schreibe. Oder bin ich hier komplett auf dem Holzweg?

Seufz

Hoffnungsvolle Grüße Isa

Bearbeitet von ChickenLipsRfun2eat:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Das müsste dann wohl obendran (über die RewriteConds), da du mit L (last) ja angibst, daß dies die letzte RewriteRule gewesen sei und weitere nicht mehr beachtet werden sollen.

Der von dir gezeigte Block biegt alles auf index.php um (die letzte RewriteRule), es sei denn die angefragte Datei (REQUEST_FILENAME) existiert als reguläre Datei größer 0 Bytes (-s), Symlink (-l) oder Verzeichnis (-d). In dem Fall wird kein Rewrite durchgeführt (-) sondern die gewünschte URL unverändert weiterverwendet (die vorletzte RewriteRule).

Die letzte RewriteRule (alles auf index.php umbiegen) funktioniert nur weil die vorletzte RewriteRule (kein Rewrite machen) die normalen Dateien davon ausnimmt. Durch das [L] Flag wird jede weitere RewriteRule ignoriert, somit können normale Dateien nicht mehr auf der letzten RewriteRule landen.

Wenn du darunter weitere RewriteRules schreibst, kommen die nie zum Zug, da die RewriteRule für index.php pauschal "alles" matcht.

Isabell

(Themenstarter)

Anmeldungsdatum:
25. Juni 2021

Beiträge: 5

Danke frostschutz. Da hatte ich wohl einen Denkfehler. Ich hatte auch die SSL Umleitung nicht richtig gesetzt, so dass alle Anfragen die (nur) über www.domain... sofort auf die index.php geschickt wurden. Jetzt klappt jedenfalls alles.

Antworten |