
Ich habe derzeit eine Datei perm_redirects.conf, die in meinen Apache-Konfigurationsstapel aufgenommen wird, wo ich Zeilen im Format
RedirectPermanent /old/url/path /new/url/path
Es sieht so aus, als müsste ich für den neuen Pfad eine absolute URL verwenden, z. B.: http://example.com/new/url/path
. In den Protokollen erhalte ich"unvollständiges Umleitungsziel /new/url/path wurde korrigiert zuhttp://example.com/neu/url/pfad."(sinngemäß).
In den 2.2-Dokumenten für RewriteRule
wird unten Folgendes als gültige Weiterleitung angezeigt, wobei für die rechte Seite der Weiterleitung nur die URL-Pfade anstelle einer ABS-URL angegeben sind:
RewriteRule ^/old/url/path(.*) /new/url/path$1 [R]
Aber ich kriege es nicht hin, dieses Format so zu verwenden, dass die Funktionalität der RedirectPermanent
Version reproduziert wird. Ist das möglich?
Antwort1
WFM:
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/old/url/path(.*) /new/url/path$1 [R]
Ergebnis:
wget http://localhost/old/url/path/foo
--2010-08-09 15:41:20-- http://localhost/old/url/path/foo
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://localhost/new/url/path/foo [following]
--2010-08-09 15:41:20-- http://localhost/new/url/path/foo
Beachten Sie (1), dass Sie wahrscheinlich [R=permanent] möchten. Die Standardeinstellung ist eine temporäre Umleitung. (2) Sie möchten nicht nur das [L], da dies zu einer internen Umleitung führt, die für den Endbenutzer unsichtbar ist (nicht durch das L verursacht, die Standardaktion "" ist eine interne Umleitung). RedirectPermanent generiert eine 3xx-Antwort an den Endbenutzer. Sie könnten das L hinzufügen, also [R=permanent,L], um zu verhindern, dass mod_rewrite weitere Regeln verarbeitet.