Seite 1 von 1

301 Redirect per htaccess mit Parametern

Verfasst: 20.11.2017, 19:38
von GoogleRocks
Hallo,

ich versuche gerade die folgenden 4 Links per Redirect in der htaccess auf eine neue Domain und Pfad umzuleiten:

-> mit einem Parameter: Rubrik

Redirect 301 /ie/allgemein/index.php?rubric=Hund https://neuedomain.de/hund
Redirect 301 /ie/allgemein/index.php?rubric=Maus https://neuedomain.de/maus

-> mit zwei Parameter: tier & nr

Redirect 301 /ie/tier/detail.php?nr=1 https://neuedomain.de/tiere/1

Redirect 301 /ie/tier/detail.php?nr=2 https://neuedomain.de/tiere/2

...den einfachen Fall (Weiterleitung der alten Domain auf die neue mit geänderten Pfadangabe ohne Paramter) bekomme ich hin....

Redirect 301 /ie/xxx/index.php https://neuedomain.de/xxx/index.php

Aber wie läuft das mit den Parametern?

Ich hoffe Ihr könnt helfen.

Marie

Verfasst:
von

Verfasst: 21.11.2017, 09:16
von chris21
Du verwendest mod_alias, nicht mod_rewrite. mod_alias hilft aber nicht für Parameter.

Also mit mod_rewrite:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^nr=([0-9]+)$
RewriteRule ^ie/tier/detail.php$ http://neuedomain.de/tiere/%1 [R=301,L]

Verfasst: 22.11.2017, 11:10
von GoogleRocks
Hallo Chris,
DANKE für deinen Input. Meinen ersten Fehler (Alias) habe ich verstanden.
Ich stell mich aber immer noch bischenblöd an und habe noch Frage - sorry.


1.) Gilt die Condition auch für Zahlen Größer 9? Teils haben bei mir die Artiklnummer 4stellige Zahlen. (z.B. /ie/tier/detail.php?nr=9345)
RewriteCond %{QUERY_STRING} ^nr=([0-9]+)$



2.) Wie müsste ich die Kondition umbauen, wenn anstelle der Zahlen Text im Paramter steht wie z.B. bei dieser URL: /ie/allgemein/index.php?rubric=Hund

- aus nr müsste ja rubrik werden
- was steht in den eckigen Klammern?

RewriteCond %{QUERY_STRING} ^nr=([0-9]+)$
RewriteRule ^ie/tier/detail.php$ https://neuedomain.de/tiere/%1 [R=301,L]

LD Marie

Verfasst: 22.11.2017, 11:18
von chris21
Zu 1)

Code: Alles auswählen

^([0-9]+)$
gibt an, dass eine Zahl beliebiger Länge (Länge größer gleich 1), aber eben nur aus Ziffern gesucht wird

zu 2.)

Da wäre die erste Zeile der Kondition:

Code: Alles auswählen

 RewriteCond %{QUERY_STRING} ^rubric=([a-zA-Z]+)$ 
wobei nach dieser Regel nur Wörter mit Buchstaben von a-z in großer oder kleiner Schreibweise möglich wären. Soll noch ein Bindestrich und Leerzeichen hinzu, sähe es so aus:

Code: Alles auswählen

 RewriteCond %{QUERY_STRING} ^rubric=([a-zA-Z\-\ ]+)$ 
Wichtig: umgeleitet wird dann auf die gleiche Schreibweise, d.h. rubrik=Hund geht auf neuedomain.de/tiere/Hund, während rubrik=hund auf neuedomain.de/tiere/hund leitet.

Verfasst: 22.11.2017, 11:37
von GoogleRocks
Super - jetzt hat schonmal das Beispiel hier geklappt und ich habe es verstanden:
RewriteCond %{QUERY_STRING} ^nr=([0-9]+)$
RewriteRule ^ie/tier/detail.php$ https://neuedomain.de/tiere/%1 [R=301,L]
...die hoffentlich bald aller letzte Frage und "Komplexitätsstufe":


Wie gehe ich damit um wenn in der URL noch ein weiterer Paramter existiert.
Wie z.B. hier: /ie/allgemein/index.php?rubric=Hund?nr=1

Wie würde die Condition aussehen.

Verfasst: 22.11.2017, 19:55
von GoogleRocks
Hab die Lösung gefunden:)

RewriteCond %{REQUEST_URI} ^/ie/xx/yy.php [NC]
RewriteCond %{QUERY_STRING} ^rubric=(.*)&nr=(.*)
RewriteRule (.*) https://www.newdom.com/xx/yy.php?rubric=%1&nr=%2 [R=301,L]

Am ende zeigt er bei der Ziel URL die folgenden Info an - warum? %3f