Seite 1 von 1

Weiterleitung einer Suchfunktion

Verfasst: 07.06.2015, 15:02
von caos
Hallo Leute ich habe ein Problem ich will Ergebnisse einer Suchanfrage weiterleiten.

https://www.DOMAIN.de/navi.php?JTLSHOP= ... lüsselwort

oder

https://www.DOMAIN.de/navi.php?JTLSHOP= ... lschreiber

Es geht dabei um das Schlüsselwort. Alle Suchanfragen mit Schlüsselwort sollen auf eine statische Seite weitergeleitet werden.

Eine normale 301 Weiterleitung bekomme ich hin aber dabei scheiter ich. kann mir jemand helfen.

Verfasst:
von

Verfasst: 07.06.2015, 16:07
von Melegrian
Und die statische Seite enthält bereits den Code, um die DB nach dem Schlüsselwort zu durchsuchen, so dass nur noch der oder die Parameter übergeben werden müssen?

Dass in der statischen Seite der Parameterwert gefiltert werden muss, um einer SQL-Injection entgegenzuwirken, ist Dir ebenfalls bekannt?

Dann in etwa nach diesem Muster:

Code: Alles auswählen

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

Verfasst: 07.06.2015, 16:09
von caos
Die Zielseite ist einfach nur https://www.DOMAIN.de/blablup und fertig. Alles auf eine Seite. Ich will damit Suchanfragen nach einem Schlüsselwort auf eine Seite umleiten

Verfasst: 07.06.2015, 16:24
von Melegrian
Welche Seite soll die Anfrage an die DB stellen?
Die bisherige Seite und nur die Ausgabe soll auf eine statische Seite umgeleitet werden?

Verfasst: 07.06.2015, 17:43
von caos
Ja die seite soll einfach weitergeleitet werden. Der Nutzer gibt es bei Suche auf der Seite das Schlüsselwort "Bauernschmiede" ein. Dann entsteht der

Link https://www.DOMAIN.de/navi.php?JTLSHOP= ... rnschmiede

und der soll weitergeleitet werden auf https://www.DOMAIN.de/alternative

gleiches gilt für alle Kombinationen mit "Bauernschmiede" also "Bauernschmiede Kugelschreiber" oder "Bauernschmiede Bleistifte" oder "was von Bauernschmiede" usw.

Verfasst:
von

Verfasst: 07.06.2015, 17:44
von caos
@Melegrian DANKE dir erstmal schon für deine Hilfe :)

Verfasst: 07.06.2015, 18:16
von Melegrian
Eine Weiterleitung von Parametern funktioniert nach dem obigen Muster.

Nur allein nutzt Dir das nicht viel, da Du ja nur den Parameter mit den Werten weiterleiten würdest. Aber ein Parameter ist nun einmal dafür gedacht, dass der von einem Script in einer Seite empfangen, ausgewertet und verarbeitet wird, in diesem Fall um eine Verbindung zur Datenbank aufzubauen und die Datenbank nach dem Parameterwert zu durchsuchen. Somit müsstest Du in die /alternative oder in die /blablup ein Script für eine Datenbankanfrage einbauen, welches den Parameterwert übernimmt. Aber nicht ohne diesen Wert zu filtern.

Gibt noch weitere Lösungen, doch die sind nicht einfacher.

Verfasst: 07.06.2015, 18:31
von caos
ok dann eben immer von

https://www.DOMAIN.de/navi.php?JTLSHOP= ... rnschmiede

auf https://www.DOMAIN.de/Bauernschmiede

solange ich in der htaccess das Wort Bauernschmiede definieren kann kein Problem. Geht das oder verstehe ich etwas nicht?

Verfasst: 07.06.2015, 19:40
von Melegrian
Wie bereits geschrieben, einfacher wird es nicht. Sollte es sich nur um den QueryString handeln, würde ich ohnehin den Support vom Anbieter kontaktieren, denn da gibt es sicherlich saubere Möglichkeiten.

Eine Lösung wie folgende wäre eventuell möglich (aber nur eventuell), doch damit würde der QueryString nicht kürzer und beachtet und getestet müsste auch noch das eine oder andere werden.

Habe nichts getestet und gerade stelle ich mir die Frage, ob die nicht noch auf sich selbst umleiten würde, was auf jeden Fall einen Fehler ergeben würde. Deshalb nur als möglicher Ansatz und mehr nicht, nur damit Du erst einmal eine Vorstellung bekommst, wie so etwas aussehen könnte. Ene Abfrage der DB wäre sauberer.

In htaccess:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^JTLSHOP=(.+)&suchausdruck=(.+)$ [NC]
RewriteRule ^(.*)$ http://www.example.com/seite/?JTLSHOP=%1&suchausdruck=%2 [L,R=301]
In /seite):

Code: Alles auswählen

<?php
if &#40;isset&#40;$_GET&#91;"JTLSHOP"&#93;&#41;
      and !empty&#40;$_GET&#91;"JTLSHOP"&#93;&#41;
      and  isset&#40;$_GET&#91;"suchausdruck"&#93;&#41;
      and !empty&#40;$_GET&#91;"suchausdruck"&#93;&#41;&#41; &#123;

    $var_shop  = preg_replace&#40;"/&#91;^a-z0-9&#93;/", "", $_GET&#91;"JTLSHOP"&#93;&#41;;
    $var_suche = preg_replace&#40;"/&#91;^a-zA_ZÄÖÜäöüß0-9-&#93;/", " ", $_GET&#91;"suchausdruck"&#93;&#41;; 

    $data = file_get_contents&#40;"http&#58;//www.example.com/navi.php?JTLSHOP=".$var_shop."&suchausdruck=".$var_suche&#41;;
    echo htmlspecialchars&#40;$data, ENT_QUOTES&#41;;
&#125;
else echo "Fehler!";
?>