Zur Navigation

seite.php?id=12 nach seite_12.html weiterleiten (301)

1 Casimyr (Gast)

Hallo,

ich habe meine Homepage vor Kurzem von seite.php?id=123 auf seite_123.html umgestellt. Nun sind aber die betroffenen Seiten über beide Adressen zu erreichen.

Gelöst habe ich das so:
RewriteRule ^seite_(.*)\.html$ /seite\.php?id=$1 [L]

Nun würde ich gerne alle Anfragen auf die alten Seiten mit ?id=xyz auf die neuen Seiten (.html) mit 301 weiterleiten.

Bisher sind alle Versuche gescheitert. Wie Ihr wahrscheinlich schon bemerkt habt, bin ich ganz frisch in dem Thema.

Ich habe an sowas gedacht
RewriteRule ^seite\.php?id=(.*)$  /seite_$1\.html [R=301,L]

Klappt aber nicht, wie müsste das richtig aussehen?

Danke und schönes Wochenende
Casimyr

21.04.2012 16:04

2 Jörg Kruse

Der Query String (das was nach dem ? folgt) muss separat in einer RewriteCond behandelt werden. Der Inhalt wird dabei mit einem %1 statt einem $1 wiederaufgenommen

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^seite\.php$  http://example.com/seite_%1.html [R=301,L]

Das Weiterleitungsziel sollte die vollständige URL enthalten. Zeichen wie der Punkt müssen dort nicht maskiert werden.

Probier mal, ob die Weiterleitung so funktioniert und nicht in eine Endlosweiterleitung führt. In letzerem Fall müsste man mittels einer weiteren RewriteCond noch eine Abbruchbedingung formulieren

21.04.2012 18:33

3 Casimyr (Gast)

Guten Morgen,

danke für deine Antwort, leider klappt es noch nicht ganz.

Ich bekomme folgenden Fehler:

Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Die Umleitung von seite.php?id=123 führt zu folgender Seite:
http://example.com/seite_123.html?id=123

Ich weiß nicht ob es das Problem ist, aber mich stört das ?id=123 hinter der .html Adresse.

Wäre für einen weiteren Tipp sehr dankbar.

ciao
Casimyr

22.04.2012 07:27

4 Jörg Kruse

Dann mit Abbruchbedingung:

RewriteCond %{THE_REQUEST} /seite\.php
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^seite\.php$  http://example.com/seite_%1.html? [R=301,L]

Mit dem "?" am Ende der Ziel-URL kannst du den alten Query String abhängen.

22.04.2012 21:20

5 Casimyr (Gast)

Nochmals vielen Dank. Nun läuft es :)

25.04.2012 12:43

Beitrag schreiben (als Gast)

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





[BBCode-Hilfe]