AndreasB. hat geschrieben:Nur nebenbei, falls das alles wäre, ginge so eine pauschale Weiterleitung effektiver so: Redirect permanent / httр://
www.domain.de/ - eine Zeile für alles., die auch keine aufwändige Musterbearbeitung benötigt.
hier wird doch dann aber nur auf die Domain umgeleitet. Wenn die aufgerufene URL aber einen Zusatz hat (z.B.
www.domain.de/test.php), dann wird das test.php nicht mit übergeben.
Nein, Redirect leitet alles weiter, was unterhalb des angegebenen Pfades liegt,
siehe Anleitung („any request beginning with URL-Path will return a redirect request to the client at the location of the target URL.
Additional path information beyond the matched URL-Path will be appended to the target URL.“).
mod_rewrites Hauptnutzen liegt darin, einen angefragten Pfad intern umzubiegen, ohne, dass der Browser davon etwas mitbekommt. Weiterhin kann mod_rewrite mittels RewriteCond noch zusätzliche Parameter einbeziehen.
Externe Weiterleitungen sind jedoch mit Redirect und RedirectMatch meist genauso gut und mit weniger technischem Aufwand hinzubekommen.
Wie müsste der zaehler.php ausschauen, wenn die kompletten links weiter geleitet werden sollen. Also
www.domain.de/test.php auf www.domain_neu/test.php (dies sollte aber bei allen Anhängen funktionieren)?
So, wie geschrieben.
RewriteRule . zaehler.php biegt den angefragten Pfad auf zaehler.php um, speichert aber den Originalpfad in der Variablen REDIRECT_URI. Auf diese Variable greift zaehler.php dann in
header("Location: https://www.example.com" . $_SERVER["REDIRECT_URI"]); zurück.
Wobei ich jetzt zugeben muss, die URL-Parameter vergessen zu haben. Insofern müsste es wohl eher
header("Location: https://www.example.com" . $_SERVER["REDIRECT_URI"] . "?" . $_SERVER["QUERY_STRING"]); lauten, falls $_SERVER["QUERY_STRING"] nicht leer ist.
Würde es nicht auch so funktionieren (in der .htaccess):
Code: Alles auswählen
RewriteEngine On
RewriteRule . zaehler.php
RewriteRule (.*) http://www.domain.de/$1 [R=301,L]
Oder würde hier nur die zaehler.php abgearbeitet werden?
Nein und nein. Eine Anfrage an test.html würde zuerst (intern) in zaehler.php umgewandelt werden, anschließend würde zaehler.php in domain.de/zaehler.php umgewandelt und die externe Weiterleitung ausgegeben werden.
Die eigene zaehler.php wird dabei wohlgemerkt nicht aufgerufen, weder am Ende (da steht die externe Weiterleitung), noch zwischendurch. Der Text, der die URL kennzeichnet, wird zuerst von sämtlichen Rewrite-Zeilen abgearbeitet, erst am Ende erfolgt die weitere Auswertung mit dem Aufruf des URL-Pfades, der übrig bleibt - wobei man das Ende mit dem L auch vorzeitig einleiten kann, dann wird aber auch keine der nachfolgenden RewriteRule-Zeile ausgeführt.