Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

URL mit Fragezeichen umleiten

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
nails
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 04.11.2011, 07:47

Beitrag von nails » 04.11.2011, 07:54

Hallo zusammen

Ich moechte gerne

/a/showproduct.php?product=xxx

nach

/a/showphoto.php?photo=xxx

umleiten und bekomme es einfach nicht hin.

Ein /b/showproduct.php?product=xxx gibt es und soll auch so bleiben.

Fuer Hilfe bzw. Ansatzpunkte zur Loesungsumsetzung waere ich dankbar.

Malte Landwehr
PostRank 10
PostRank 10
Beiträge: 3474
Registriert: 22.05.2005, 10:45

Beitrag von Malte Landwehr » 04.11.2011, 08:39

Du hast vermutlich versucht, das Fragezeichen auf klassischem Wege im RegExp zu matchen? Das Zauberwort heißt QUERY_STRING. Schau dir z.B. https://stackoverflow.com/questions/5790 ... h-htaccess an oder google einfach mal nach "modrewrite questionmark", "redirect questionmark", usw.
Die 45 wichtigsten SEO-Tools und wie ich sie nutze.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.11.2011, 10:08

Probiere mal, so sollte es gehen, unter Localhost funktioniert es zumindest:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^product=(.*)$ [NC]
RewriteRule ^a/showproduct.php$ /a/showphoto.php?photo=%1 [L,R=301]
Wenn als Wert jedoch nur Zahlen oder Buchstaben übergeben werden, so ist ein weniger gieriger Ausdruck für (.*) empfehlenswert, wie zum Beispiel ([A-Za-z]+) oder für Zahlenwerte:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^product=([0-9]+)$ [NC]
RewriteRule ^a/showproduct.php$ /a/showphoto.php?photo=%1 [L,R=301]

nails
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 04.11.2011, 07:47

Beitrag von nails » 04.11.2011, 13:49

Vielen das fuer das Feedback.

Ich habe jetzt beide Vorschlaege versucht und es funktioniert nicht.

Ich bekomme die Meldung 'Not found' ... /showproduct.php was not found on this server.

Weitere Vorschlaege?

tmyp
PostRank 6
PostRank 6
Beiträge: 483
Registriert: 07.08.2010, 15:00

Beitrag von tmyp » 04.11.2011, 14:26

Wo hast Du die .htaccess abgelegt?

Und sonst noch ein Vorschlag: selbst lesen macht schlau. Nur darauf warten, dass jemand dir die Lösung präsentiert hilft nicht.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.11.2011, 14:36

Also, bei mir funktioniert es:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^literatur=([0-9]+)$ [NC]
RewriteRule ^demoshop/demo.php$ /demoshop/demo.php?software=%1 [L,R=301]
Wenn ich

Code: Alles auswählen

http://localhost/demoshop/demo.php?literatur=2
aufrufe, dann wird

Code: Alles auswählen

http://localhost/demoshop/demo.php?software=2
geladen.

Wie so 'Not found' ... /showproduct.php, existiert die Datei nicht? Oder den Pfad fehlerhaft eingetippt?

nails
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 04.11.2011, 07:47

Beitrag von nails » 04.11.2011, 15:01

Vielen lieben Dank an alle. Vor allem Melegrian fuer die tolle Unterstuetzung.

Folgendes hat bei mir das Problem geloest.

RewriteCond %{QUERY_STRING} ^product=(.*)$ [NC]
RewriteRule ^showproduct.php$ showphoto.php?photo=%1 [L,R=301]

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.11.2011, 15:28

Gut, alles klar. Hatte gerade noch einen zweiten Test gemacht und nicht nur den Namen des Parameters verändert, sondern den Aufruf auch auf eine andere Datei geleitet, das funktionierte ebenfalls.

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^literatur=([0-9]+)$ [NC]
RewriteRule ^demoshop/demo.php$ /demoshop/start.php?software=%1 [L,R=301]

rufiO
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 16.07.2013, 11:13

Beitrag von rufiO » 16.07.2013, 13:30

Hallo!

Ich habe ein ähnliches Problem, komme jedoch nicht auf die korrekte Lösung. Bei mir besteht die alte Adresse und die neue Adresse aus URLs mit einem "?" im Namen. Es handelt sich hierbei um die häufigsten Suchbegriffe meiner Seite, die unter dem alten CMS (Joomla) gut gerankt haben und die ich jetzt mit dem neuen CMS (Wordpress) nicht verlieren will. Daher will ich nun auf die neuen Suchergebnisse weiterleiten. Insgesamt sind es nur 9 Begriffe. Ich habe es natürlich auch erst falsch gemacht und das "?" nicht weiter beachtet (nur damit ihr seht, was auf was weiterleitet werden soll):

Code: Alles auswählen

redirect 301 /suche.html?keyword=Keywordeins /?s=Keywordeins&post_type=product
redirect 301 /suche.html?keyword=Keywordzwei /?s=Keywordzwei&post_type=product
redirect 301 /suche.html?keyword=Keyworddrei /?s=Keyworddrei&post_type=product
Nach Eurer Anleitung habe ich dann für den ersten Suchbegriff dies hier erstellt:

Code: Alles auswählen

RewriteCond %{query_STRING} ^keyword=Keywordeins([A-Za-z]+)$
RewriteRule ^suche\.html$ /?s=Keywordeins&post_type=product [L,R=301]
Leider klappt es nicht. Ich vermute, dass es daran liegt, dass die neue URL ebenfalls ein "?" enthält - kann das sein? Obwohl im oberen Beispiel ja auch ein "?" drin ist. Hmm, was mache ich falsch. Kann mir bitte jemand helfen?

Danke im Voraus!

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 16.07.2013, 13:49

Lies einfach nochmal den Beitrag von Malte ;)

rufiO
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 16.07.2013, 11:13

Beitrag von rufiO » 16.07.2013, 14:46

Da habe ich schon draufgeschaut. Hier kommen für mich mehr Fragen auf als Antworten. Ich kann da für mich nicht das Essentielle draus ziehen. Da geht es ja um schöne Links und Ordnerstrukturen. Das macht Wordpress ja zum Glück.

Meins muss auch nicht variabel sein. Ich benötige das nur für 9 Seiten, deren URLs mir bekannt sind und auch so bleiben sollen.
Von:
/suche.html?keyword=Keywordeins
Nach:
/?s=Keywordeins&post_type=product

Es kann sich doch nur noch um eine kleine Änderung handeln, oder?

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 16.07.2013, 14:59

Bitte nochmal lesen.

Das Grundproblem ist, dass Du URLs mit Fragezeichen nur über mod_rewrite mit der RewriteCond auf den QUERY_STRING abfangen kannst. Anders kommst Du bei ? in der URL (d.h. GET Parametern) nicht weiter.

Wenn Dir das klar ist, kannst Du die Lösung finden.

rufiO
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 16.07.2013, 11:13

Beitrag von rufiO » 16.07.2013, 15:08

Ja, das ist mir klar. Vielleicht hast Du es übersehen, aber das habe ich bereits ohne Erfolg ausprobiert:

Code: Alles auswählen

RewriteCond %{query_STRING} ^keyword=Keywordeins([A-Za-z]+)$
RewriteRule ^suche\.html$ /?s=Keywordeins&post_type=product [L,R=301]
... und zwar in so unzähligen unterschiedlichen Kombinationen, dass ich nicht mehr weiß wo vorne und hinten ist. Seit fast 5 Stunden sitze da ich nun dran. Der letzte Schritt ist für mich dann immer eine Frage in nem Forum. Womit ich mir etwas Klarheit erhofft habe.

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 16.07.2013, 15:54

Den Versuch hatte ich wahrlich übersehen.

Also nun:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^keyword=([A-Za-z\ -]+)$
RewriteRule ^suche\.html$ /?s=%1&post_type=product [L,R=301]
Wichtig ist zudem eventuell noch die Position dieser Anweisung.

Packe Sie mal testweise schön weit vorne in die htaccess, vor anderen Rewrite Rules.

rufiO
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 16.07.2013, 11:13

Beitrag von rufiO » 16.07.2013, 16:21

Yeah - funktioniert!

Der Tipp mit der Position war noch wichtig. Ich hab das jetzt an die erste Stelle gepackt, noch vor dieser Anweisung:

Code: Alles auswählen

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - &#91;L&#93;
RewriteCond %&#123;REQUEST_FILENAME&#125; !-f
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d
RewriteRule . /index.php &#91;L&#93;
</IfModule>
Direkt dahinter hat es nicht funktioniert.

Vielen Dank! :D

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag