Zur Navigation

Bestätigungsseite umleiten

1 moprivat

Hallo zusammen,

ich versuche per htaccess eine dynamische Bestätigungsseite auf eine externe Webseite umzuleiten.

Der Kernstring sieht immer so aus:
http://www.meine-webseite.de/produkt/?confirmed

Der dynamische Teil dazu:
http://www.meine-webseite.de/produkt/?confirmed&lid=10

Ist es möglich ab hier abzufragen:
/produkt/?confirmed
und
&lid=10
dabei zu ignorieren? Es soll generell bei dem Teilstring /produkt/?confirmed auf eine externe Seite umgeleitet werden.

Ich habe schon einiges probiert, bin aber in diesem Thema leider unerfahren.

Würde mich sehr über eine Rückmeldung freuen.

Viele Grüße

Mo

10.01.2017 13:28

2 moprivat

Ich wollte nicht untätig sein und habe einen passenden Ansatz gefunden, der leider nicht funktioniert. Ich habe ihn in Wordpress unter die RewriteEngine on geschrieben:

RewriteRule ^produkt/?confirmed(.+)$ http://neue-Webseite.de [R=301,L]

Oder muss ich erst den Teilstring &lid=10 entfernen und dann die Seite umleiten?

Freue mich auf Rückmeldungen.

Viele Grüße

Mo

10.01.2017 14:07 | geändert: 10.01.2017 14:26

3 Jörg Kruse

Der Query String (Teil der URL nach dem ?) muss in einer separaten Bedingung erfasst werden:

RewriteCond %{QUERY_STRING} ^confirmed
RewriteRule ^produkt/$ http://example.com/ [R=301,L]

10.01.2017 14:33 | geändert: 10.01.2017 14:34

4 moprivat

Genial. Es hat sofort geklappt.

Aaaber, es muss wohl etwas spezifischer sein.

Denn wenn ich statt ?confirmed nun ?console im Link stehen habe, leitet die Seite trotzdem um. Fehlt etwas in der unteren Zeile?

Danke Dir für die schnelle Hilfe!!!

10.01.2017 14:37 | geändert: 10.01.2017 14:52

5 moprivat

z.B. so:

RewriteCond %{QUERY_STRING} ^confirmed
RewriteRule ^produkt/?confirmed$ http://example.com/ [R=301,L]

10.01.2017 14:53

6 Jörg Kruse

Denn wenn ich statt ?confirmed nun ?console im Link stehen habe, leitet die Seite trotzdem um.

Sollte eigentlich nicht. "^confirmed" ist schon recht eindeutig und bedeutet, dass der Query String mit einem "confirmed" beginnen muss. Ein "console", was irgendwo dahinter folgt, schließt dies natürlich nicht aus.

Befinden sich oberhalb noch RewriteRules, die da vielleicht noch in irgendeiner Art dazwischenfunken?

RewriteRule ^produkt/?confirmed$ http://example.com/ [R=301,L]

Hinter dem RewriteRule erwartet mod_rewrite einen Pfad ohne Query String - das "?confirmed" führt dazu, dass die Regel überhaupt nicht matcht.

Edit:
Wenn man viel hin und her testet, spielt einem manchmal auch der Browser einen Streich - da hilft es dann den Browser-Cache zu leeren

10.01.2017 15:01 | geändert: 10.01.2017 15:05

7 moprivat

Nein, es ist die klassische Wordpress htaccess-Datei.

Das ?console kommt direkt nach dem / und ersetzt das ?confirmed komplett. Deswege wundert es mich auch. Die Schreibweise weicht ja komplett ab.

10.01.2017 15:34 | geändert: 10.01.2017 15:36

8 Jörg Kruse

Nein, es ist die klassische Wordpress htaccess-Datei.

Auch durch die WordPress Rule wird die URL verändert - deswegen sollte die Weiterleitung oberhalb stehen, am besten direkt unterhalb der RewriteBase-Direktive.

Das ?console kommt direkt nach dem / und ersetzt das ?confirmed komplett.

Heißt "ersetzt", dass du "?confirmed" eingibst, und am Ende steht da "?console"?

Deswege wundert es mich auch. Die Schreibweise weicht ja komplett ab.

Es beginnen beide mit "con". Manche Webhoster aktivieren auch das Modul mod_speling, was bei ähnlich geschriebenen Strings anschlägt und einem bei der Erstellung von Weiterleitung auch schon mal in die Suppe spucken kann.

Das kann man zum Glück in der .htaccess Datei abschalten:

<IfModule mod_speling.c>
    CheckSpelling off
</IfModule>

Und da sich Browser Weiterleitungen merken, sollte wie gesagt beim Testen nach jeder Änderung der Browser-Cache geleert werden

10.01.2017 16:22 | geändert: 10.01.2017 16:24

9 moprivat

Heißt "ersetzt", dass du "?confirmed" eingibst, und am Ende steht da "?console"?

Oh sorry. Ich habe es nicht ausführlich beschrieben. Das passiert wenn ich eine andere Seite aufrufe. Habe ich nur durch Zufall entdeckt. Schalte ich das Script aus, ist der Fehler wieder behoben. Seltsam...

10.01.2017 17:55

10 Jörg Kruse

Schalte ich das Script aus

Was meinst du mit Script - die Weiterleitung in der .htaccess Datei?

Ansonsten geh nochmal alle von mir genannten Punkte durch:

1. die Weiterleitung ganz nach oben

2. CheckSpelling ausschalten

3. Browser-Cache leeren (wichtig!) und Browser neu starten

4. die betroffene URL mit dem /?console nochmals im Browser aufrufen

10.01.2017 19:29 | geändert: 10.01.2017 19:32