
Ich habe die folgenden 2 Links, ich bin nicht so gut mit .htaccess-Regelnnoch.
Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111
Ich möchte den gesamten Datenverkehr von der alten URL zur neuen URL umleiten (einschließlich der Parameter charity_id
& project_id
).
Ich versuche, die .htaccess-Regeln zu lernen, finde die Online-Tutorials aber etwas vage.
Ich hätte wirklich gerne eine einfache Erklärung der .htaccess-Regeln.
(Gib einem Mann einen Fisch, und du ernährst ihn für einen Tag,lehre einen Mann das Fischen und ernähre ihn ein Leben lang).
Die richtige Antwort ist die Antwort mit einer einfachen und nützlichen Erklärung (wenn möglich zusammen mit den Regeln!).
Antwort1
Um das Einrichten von .htaccess-Regeln zu erlernen, benötigen Sie zumindest einige Regexp-Kenntnisse und müssen sicher im Umgang mit dem Apache-Modul mod_rewrite sein, da es dank seiner Flexibilität beim Erstellen von Umschreiberegeln praktisch ist.
Wenn ja, kann Ihr Code wie folgt aussehen:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]
Beihttp://httpd.apache.org/docs/2.4/mod/mod_rewrite.html(Wählen Sie für die Apache-Version 2.4 ggf. eine andere Version) ist als nützliche Referenz verfügbar, Sie müssen also davon ausgehen, auch um den obigen Code besser zu verstehen.
Sie können es sich RewriteRule
als Baustein für das Umschreiben vorstellen, sodass jede Regel es mindestens einmal verwendet. Sie werden es vorher hinzufügen, RewriteCond
wenn Sie Umgebungsvariablen überprüfen oder auf Abfragezeichenfolgenwerte verweisen müssen, wie in unserem Codeabschnitt.
Um eine Rückreferenz in eine Ersetzungszeichenfolge einzufügen, die von vorne kommt , RewriteCond
verwenden Sie „von“ bis „ %1
Werte “. %9
Wenn Sie eine Rückreferenz vom ersten Teil RewriteRule
selbst benötigen, verwenden Sie „ $1
bis“ $9
.
Beachten Sie das Fragezeichen am Ende der Ersetzungs-URL, da hierdurch die Abfragezeichenfolge übersprungen wird. Wenn es fehlt, steht es ?charity_id=885&project_id=18111
am Ende der neuen URL.
Antwort2
In einem anderen Beitrag hat sysadmin1138 eine sehr gute Einführung in das Mod-Rewrite geschrieben.
Den Beitrag finden SieHier.
/EDIT: Beispiel:
old: http://example.com/path?var=val
new: http://example.com/path/var/val
.htaccess
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?