Zur Navigation

Dynamische URLs umleiten

1 Oliver (Gast)

Moin moin,

ich habe folgendes Problem. Unsere Seiten sind bei Google mit http://www.example.de/?id=name indexiert.
Nun haben wir einen Relaunch vorgenommen und möchten die Links auf neue Seiten umleiten um alte Bookmarks und natürlich Google einträge auf die richtige Seite umzuleiten.

In der .htaccess wurden etliche Versionen getestet von

RewriteBase /
RewriteCond %{QUERY_STRING} id=name&m=3
RewriteRule /index\.php http://www.example.de/ordner/neuedatei.html [R=301]

bis zur einfachen

#Redirect 301 /?id=name&m=3 http://www.example.de/ordner/neuedatei.html

bzw.

#Redirect permanent /?id=name&m=3&c=name http://www.example.de/neuedatei.html

Es führt alles nicht zum Erfolg und ich google nun schon seit Tagen. Dann fand ich dies Forum und dacht mir, versuchste es mal hier. :)

Ich hoffe Ihr könnt mir weiterhelfen, bin leider nicht so bewandert mit den .htaccess Möglichkeiten.

Schöne Grüße,
Oliver

15.08.2012 21:05

2 Jörg Kruse

In der htaccess Datei würde ich Pfade in mod_rewrite Rules nicht mit einem Slash beginnen:

RewriteRule index\.php http://www.example.de/ordner/neuedatei.html [R=301]

15.08.2012 21:31

3 Oliver (Gast)

Moin Jörg!

Schonmal Danke für die Antwort, das ging ja fix. So schnell hab ich nicht mit einer Antwort gerechnet.

Ich hab nach deinem Tipp nochmal ein bisschen rumprobiert und mich weiter in das Thema eingelesen. Nun habe ich es endlich zum Laufen bekommen! *freu* Was aber mehr eine Try & Error Methode war. *grins*

RewriteBase /
RewriteCond %{QUERY_STRING} id=name
RewriteRule ^$ http://www.example.de/ordner/neuedatei.html [R=301,L]

Ich musste also die komplette erste Anweisung von RewriteRule entfernen und flag'en, damit er nicht die zweite Anweisung als erste ansieht, denn die Links enthalten ja keine index.php (bzw. index.html) im String.

Vielleicht hilft es ja sonst noch jemanden irgendwann mal. :)

Also besten Dank!
Oliver

16.08.2012 00:15

4 Mia (Gast)

Bei google häufien sich seit kurzem die Fehlermeldungen für dynamische Urls. Ich habe nun bei google den url parameter sidE angegeben, damit google diese urls nicht mehr listet. Ich würde jetzt als zusätzliche Maßnahme noch Umleitungen in htaccess reinschreiben, um dem server mitzuteilen, dass die dynamischen Urls auf die statische Url umgeleitet werden sollen. Mit redirect haben die Umleitungen nicht funktioniert. Nach sehr langem Suchen habe ich jetzt herausgefunden, dass dynamische Urls mit Rewrite Base umgeleitet werden.
Hier eine Beispiel-url, die umgeleitet werden soll:

http://www.meine.domain.de/de/Welpen-im-Korb-XXL-Teile/c-KAT09/a-P000060?sidE1774166A3E14B4EBE2818CB373BC161=e214b82609882fa2c5b316c1424778aa

Leider kenne ich mich mit der Rewrite-Base-Syntax nicht aus und hätte gerne einen Tipp, wie ich das Problem angehen kann.

Viele Grüße
Mia

01.09.2012 18:58

5 Jörg Kruse

Nach sehr langem Suchen habe ich jetzt herausgefunden, dass dynamische Urls mit Rewrite Base umgeleitet werden.

Die RewriteBase gibt an, auf welchen Basis-Pfad sich die relativen Pfade beziehen. Die Angabe wird bei manchen Webhostern benötigt (z.B. bei 1und1), bei anderen kann deise dagegen zu Problemen führen. Mit der Weiterleitung dynamischer URLs hat diese Direktive nichts zu tun.

Für die Weiterleitung dynamischer URLs wird eine RewriteCond benötigt, die den Query String auswertet. Beispiel:

RewriteCond %{QUERY_STRING} ^sidE
RewriteRule ^de/Welpen-im-Korb-XXL-Teile/c-KAT09/a-P000060$ http://example.com/ [R=301,L]

01.09.2012 19:22

6 Mia (Gast)

Vielen Dank für die schnelle Hilfe. Meine Website ist gehostet bei 1 und1. Ich habe die Url wie oben angegeben auf den Server geladen, soweit ich das überschaue war alles o.k.:

RewriteCond %{QUERY_STRING} ^sidE
RewriteRule ^de/Welpen-im-Korb-XXL-Teile/c-KAT09/a-P000060$ http://www.meine-website.de/de/Welpen-im-Korb-XXL-Teile/c-KAT09/a-P000060 [R=301,L]

Dann habe ich vier weitere Úmleitungen nach dem selben Muster hochgeladen. Da bekam ich einen server error gemeldet.

Woran könnte das liegen?

Schöne Grüße
Mia

01.09.2012 21:40

7 Jörg Kruse

Was für ein Server Error?

Du leitest auf die Seite selbst weiter, das kann in eine Endlosschleife führen (und vermutlich einen Server Error auslösen)

Mit einem "?" am Ende der URL hängst du den alten Query String ab (und verhinderst damit die Endlosweiterleitung). Außerdem kannst du den Pfad in einer Klammer speichern und mi einem $1 wieder aufnehmen, das ist kürzer:

RewriteCond %{QUERY_STRING} ^sidE
RewriteRule ^(de/Welpen-im-Korb-XXL-Teile/c-KAT09/a-P000060)$ http://www.example.com/$1? [R=301,L]

Edit:
wenn du alle URLs mit einem ?sidE auf die entsprechende URL ohne ?sidE weiterleiten möchtest, benötigst du nur eine Rule:

RewriteCond %{QUERY_STRING} ^sidE
RewriteRule ^(.+)$ http://www.example.com/$1? [R=301,L]

01.09.2012 21:56 | geändert: 01.09.2012 22:01

8 Mia (Gast)

Das ist eine sehr elegante Lösung, alle Urls auf einmal umzuleiten. Das funktioniert.

Vielen, vielen Dank für deine Unterstützung und schönen Tag noch.

Mia

02.09.2012 10:04

... 4 Jahre und 5 Monate später ...

9 Dennis (Gast)

Bin gerade über google auf diesen Tread gestoßen. Letzter Eintrag 2012, hoffe einer liest das noch :)

Bei mir gibt es auch eine URL nicht mehr, die ich gerne weiterleiten würde

?path=tourdates&contentid=3528

(die Zahl am Ende, gibt es in vielen Ausführungen. Diese müsste automatisch ersetzt werden "?path=tourdates&contentid="")

Umgeleitet werden soll es zu:

/include.php?path=contentarchive&type=3


Hoffe einer kann mir weiterhelfen.

20.02.2017 13:05

10 Jörg Kruse

Eine ein- oder mehrziffrige Zahl kann durch den regulären Ausdruck [0-9]+ erfasst werden

RewriteCond %{QUERY_STRING} path=tourdates&contentid=[0-9]+
RewriteRule ^ http://www.example.com/include.php?path=contentarchive&type=3 [R=301,L]

20.02.2017 13:41 | geändert: 20.02.2017 13:42