Seite 1 von 1

301 Umleitung

Verfasst: 24.08.2009, 18:27
von Billy04
Ich habe ein Problem mit einer 301er Weiterleitung...

kann mir jemand mitteilen wie ich folgende url

www.meineseite.de/trennkost?subthema=89

auf

www.meineseite.de/trennkost/23/fruechte

umleiten kann...

irgendwie klappts nicht.

vielen dank

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: 301 Umleitung

Verfasst: 24.08.2009, 19:08
von Mork vom Ork
Billy04 hat geschrieben:www.meineseite.de/trennkost?subthema=89 auf www.meineseite.de/trennkost/23/fruechte umleiten kann...
Mal angenommen, du hast einen Apache-Webserver:

Umleitungen werden normalerweise mit Redirect eingerichtet. Redirect kennt aber nur den Pfad der URL, das Fragezeichen und alles, was dahinter kommt, gehört zu den Parametern - diese lassen sich nur mit RewriteCond prüfen. Ergo in /.htaccess:

RewriteEngine on
RewriteCond %{QUERY_STRING} =subthema=89
RewriteRule ^trennkost$ /trennkost/23/fruechte? [R=301,L]

Die Zuordnung sollte einleuchten. Das Fragezeichen am Ende der Ziel-URL sorgt dafür, dass die ursprünglichen Parameter nicht weiter mitgeschleppt werden (ohne Fragezeichen würdest du bei /trennkost/23/fruechte?subthema=89 landen).

Verfasst: 24.08.2009, 19:32
von Billy04
das leuchtet mir ein - aber dann würde es bei

index.php?thema=14

ja so heissen:

RewriteCond %{QUERY_STRING} =thema=14
RewriteRule ^index.php$ /meinezielurl [R=301,L]

klappt aber nicht... :(

Verfasst: 24.08.2009, 19:56
von bloddy newbie
Hallo,

das erste "=" ist Mork sicher irgendwie dazwischen gerutscht! Ohne klappts auch:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^thema=14$
RewriteRule ^index.php$ /meinezielurl [R=301,L] 
^ bedeutet am Anfang des Queries muss "thema" stehen
$ bedeutet am Ende des Queries muss 14 stehen

Kommen noch andere Parameter in den URIs vor, dann lass die beiden Begrenzer weg oder formuliere das Pattern um.

Grüße BN

Verfasst: 24.08.2009, 21:10
von Mork vom Ork
Billy04 hat geschrieben:dann würde es bei index.php?thema=14 ja so heissen:

RewriteCond %{QUERY_STRING} =thema=14
RewriteRule ^index.php$ /meinezielurl [R=301,L]
Richtig.
klappt aber nicht... :(
Doch, das tut, was es soll. Du rufst im Browser example.com/index.php?thema=14 auf? Und was passiert dann, bleibt die Adresse stehen und es erscheint ein 404?

Verfasst: 24.08.2009, 21:14
von Mork vom Ork
bloddy newbie hat geschrieben:das erste "=" ist Mork sicher irgendwie dazwischen gerutscht!
Nein, das gehört genau da hin.
RewriteCond %{QUERY_STRING} ^thema=14$
Bei feststehenden Texten statt eines simplen, festen Vergleichs (dafür steht das einleitende Gleichheitszeichen) einen Mustervergleich einzusetzen, ist IMHO eine leider weit verbreitete Unsitte, genauso wie …
RewriteRule ^index.php$ /meinezielurl [R=301,L]
… den Punkt als Platzhalter einzusetzen, obwohl eigentlich ein echter Punkt (Muster \.) gemeint sein sollte.
^ bedeutet am Anfang des Queries muss "thema" stehen
$ bedeutet am Ende des Queries muss 14 stehen
Demnach würde das Muster auch auf themamitirgendwasdazwischen14 passen, was es aber nicht tut. Das Muster ^thema=14$ steht für „Anfang, gefolgt vom Text thema=14, gefolgt vom Ende“. Und bitte nicht solche grausigen Wortvergewaltigungen wie „Queries“ benutzen. Bitte!