Zur Navigation

Umleinten eines URL-Teil-Begriffs

1 Bernd3060 (Gast)

Hallo.

Ich habe eine URL, die beispielsweise so aussieht:
http://www.url.de/en/abc/def/ghi/index.htm

Dabei ist "def" aber falsch geschrieben und soll eigentlich z.B. "edf" heissen, was dann eine solche URL ergäbe:
http://www.url.de/en/abc/edf/ghi/index.htm

Die besondere Herausforderung dabei ist das was gleich hinter der Domain steht. Als z.B. /en/, denn das ist die Sprache und die kann sich ändern, die URL an sich bleibt aber gleich. Also z.B. gäbe es auch
http://www.url.de/de/abc/edf/ghi/index.htm

Ich kann das Verzeichnis natürlich einfach ändern aber dann laufen die ganzen gespeicherten Favoriten halt auf einen 404. Deswegen würde ich gerne per 301 eine Umleitung ergänzen, die alles mit def zu edf umleitet und alles drumherum ignoriert.

Ich hab's leider nicht hinbekommen und ich habe auch online nichts gefunden, wie ich das realisieren könnte. Für einen Tipp wäre ich sehr dankbar.

Gruß,

Bernd

07.05.2013 14:55

2 Jörg Kruse

Ich würde es so probieren (.htaccess Datei im Hauptverzeichnis):

RewriteEngine on
RewriteRule ^([^/])/([^/)/def/(.*)$ http://www.example.com/$1/$2/edf/$3 [R=301,L]

07.05.2013 17:10

... 1 Jahr später ...

3 BerndB (Gast)

Hallo.

Ich habe nochmal ein Ähnliches Problem wie oben beschrieben, aber wenn ich den Lösungsvorschlag oben versuche anzuwenden, klappt es leider nicht. Problem ist, ich habe folgende URL:
http://www.url.de/abc/en/def/ghi/jkl/mno/pqr/index.htm
Daraus soll werden:
http://www.url.de/abc/de/def/jkl/mno/pqr/index.htm

Es ändert sich zum einen also die Sprache (hinter abc), zum anderen fällt ghi weg und alles was dahinter kommt soll eine Ebene höher gehoben werden.
Das Problem ist, das alles, was hinter jkl/ kommt, variabel ist. Es gibt also x Unterstrukturen von jkl ab, diese sind aber bei der alten und neuen URL jeweils gleich.

Ich hoffe, man kann das verstehen, was ich erreichen will. :-) Für eine Antwort wäre ich wie immer sehr dankbar.

Gruß,

Bernd

30.05.2014 11:06

4 Jörg Kruse

Der variable Teil hinter /jkl/ kann durch ein (.*) erfasst und durch ein $1 wieder aufgenommen werden.

Probier mal so:

RewriteEngine on
RewriteRule ^abc/en/def/ghi/jkl/(.*)$ http://%{HTTP_HOST}/abc/de/def/jkl/$1 [R=301,L]

30.05.2014 11:15

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]