Ergebnis 1 bis 13 von 13

Thema: Rewrite anhand Referer (mod_rewrite, HTTP_REFERER)

  1. #1
    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816

    Rewrite anhand Referer (mod_rewrite, HTTP_REFERER)

    Hallo,

    ich habe ein Wordpress laufen, welches extern verlinkt ist. Klickt jemand auf den Link, wird er derzeit auf die Startseite des Wordpress weitergeleitet.
    Jetzt hätte ich es gern so, dass wenn jemand von einem definierten Referer kommt, auf die dafür vorgesehene Unterseite des Wp weitergeleitet wird.

    Beispiel:

    Referer: https://externe-seite.de/vertragspartner.html

    Aktuelles Ziel: https://www.meine-seite.de/
    Gewünschtes Ziel: https://www.meine-seite.de/zielseite/


    Habe schon einiges probiert, zeigt aber oftmals keine Wirkung oder führt zu Umleitungsfehlern.

    Grüße,
    Syrius
    SzeneBox.org bei Telegram https://t.me/szenebox

  2. Werbung - Hier werben?
  3. #2
    Junior
    Registriert
    Nov 2019
    Beiträge
    72
    Gefällt mir!
    116
    Du gefällst: 17
    Hey,

    meint "Umleitungsfehler" eine Endlos Weiterleitung?

    Maybe so

    HTML-Code:
    RewriteEngine On
    
    RewriteCond %{HTTP_REFERER} ^https:\/\/externe-seite\.de/vertragspartner\.html [NC]
    RewriteRule ^(.*)$ https://www.meine-seite.de/zielseite/ [R=301,L]
    https://htaccess.madewithlove.be?sha...1-23cd4657924d
    Geändert von echterkevin (23.11.2020 um 14:52 Uhr)

  4. Diesen Mitgliedern gefällt dieser Beitrag:


  5. #3
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    Leider ohne Auswirkungen.

    Endlose Weiterleitung, ja genau.
    SzeneBox.org bei Telegram https://t.me/szenebox

  6. #4
    Senior
    Registriert
    May 2020
    Beiträge
    356
    Gefällt mir!
    81
    Du gefällst: 310
    Und du bist sicher, dass es an den Regeln liegt und nicht an der sonstigen Konfiguration?
    Der Link mit der Testseite bescheinigt ja die Funktion des Codes, allgemein gesehen.

    Ob der Code überhaupt ausgeführt wird, könntest du mit CO oder E testen: https://httpd.apache.org/docs/2.4/re...s.html#flag_co (E knapp darunter).
    Wenn ja, dann erst die Cond prüfen mit selbigem Code und Schritt für Schritt weiter. Cookies löschen und Cache löschen ist wohl selbstverständlich, siehe auch https://stackoverflow.com/questions/...-rewrite-rules

    Zudem war die Frage von echterkevin recht interessant und blieb leider unbeantwortet.

  7. Diesen Mitgliedern gefällt dieser Beitrag:


  8. #5
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    Hab den Eindruck der Referer bleibt irgendwo auf der Strecke. Er landet auf jeden Fall nicht im Log.

    Zum Log des Referer nutze ich folgende Zeilen in meiner vhost.conf:

    Code:
    LogFormat "%h;%r;%{Referer}i" combined
    LogFormat "%{X-Forwarded-For}i;%r;%{Referer}i" proxy
    SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
    CustomLog "/var/log/apache2/analytics.log" combined env=!forwarded
    CustomLog "/var/log/apache2/analytics.log" proxy env=forwarded
    Kann das möglicherweise an CloudFlare (trotz deaktivierten Proxy) liegen?

    Log-Eintrag (IP ersetzt):
    # Chrome: *.*.*.* - - [24/Nov/2020:09:35:45 +0100] "GET / HTTP/1.1" 301 384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
    # Firefox: *.*.*.* - - [24/Nov/2020:09:37:27 +0100] "GET / HTTP/1.1" 200 33246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0"

    #edit
    Die Source nutzt nicht das Attribut rel="noreferrer".
    SzeneBox.org bei Telegram https://t.me/szenebox

  9. #6
    Senior
    Registriert
    May 2020
    Beiträge
    356
    Gefällt mir!
    81
    Du gefällst: 310
    Okay, ein Problem nach dem anderen.

    Du hast ja hinzugefügt, dass du in eine Redirect-Loop kamst. Also hat der Referer zumindest zu einem Zeitpunkt mal funktioniert.
    Fix #1: Am besten eine 2. htaccess in den /zielseite/-Ordner packen, die die übergeordnete htacess aufhebt:
    Code:
    ## Internal Redirect Loop Protection
    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    #alternativ RewriteRule     .*              -               [L]
    Vorher kurz testen, ob die Env tatsächlich gesetzt wird.

    Fix #2: Eigentlich kannst du die Fix#1-Condition auch direkt zur Referer-Rule packen und negieren, sodass das nur ausgeführt wird, wenn der Wert nicht 200 ist.

    Ob Cloudflare Probleme macht, müsstest du ja über den direkten IP-Aufruf testen können. Ggf. mittels Browser-Inspect die URL auf der Source-Seite in deine Server-IP ändern, dann kannst du es auch mit der richtigen Source testen.

  10. Diesen Mitgliedern gefällt dieser Beitrag:


  11. #7
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    Zitat Zitat von mnoszb41546 Beitrag anzeigen
    Du hast ja hinzugefügt, dass du in eine Redirect-Loop kamst. Also hat der Referer zumindest zu einem Zeitpunkt mal funktioniert.
    Das wird darauf zurückzuführen sein, dass die (meine) Condition falsch war und immer ausgelöst hat.

    Fix #1: Am besten eine 2. htaccess in den /zielseite/-Ordner packen, die die übergeordnete htacess aufhebt:
    Einen Ordner zur Zielseite gibt es nicht. Weiß jetzt nicht wie sich das im Fachjargon nennt aber gemeint ist folgendes:

    https://www.meine-seite.de/das-ist-meine-zielseite oder auch
    https://www.meine-seite.de/id-1234

    Fix #2: Eigentlich kannst du die Fix#1-Condition auch direkt zur Referer-Rule packen und negieren, sodass das nur ausgeführt wird, wenn der Wert nicht 200 ist.
    Wenn ich das mache, ändert sich nicht bis auf das die Links zu anderen Unterseiten nicht mehr funktionieren.

    ---

    Ich werde jetzt mal ein neues WP von der technischen Seite her auf einem anderen Server 1:1 aufsetzen und das ganze dort durchspielen. Ich danke euch für die Vorschläge und investierte Zeit! Mir wird sie leider etwas knapp und ich brauche rasch eine Lösung. Kann mich wie so oft leider nicht auf große Fehlersuche begeben. Wie das halt ab und an so mit Kunden/Vorgesetzten ist. Melde mich dann gleich wieder. Danke soweit!
    SzeneBox.org bei Telegram https://t.me/szenebox

  12. #8
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    Habe jetzt noch etwas anderes vorab probiert.

    index.php
    Code:
    <?php
    echo $_SERVER['PHP_SELF'];
    echo "<br>";
    echo $_SERVER['SERVER_NAME'];
    echo "<br>";
    echo $_SERVER['HTTP_HOST'];
    echo "<br>";
    echo $_SERVER['HTTP_REFERER'];
    echo "<br>";
    echo $_SERVER['HTTP_USER_AGENT'];
    echo "<br>";
    echo $_SERVER['SCRIPT_NAME'];
    ?>
    Ausgabe
    Code:
    /index.php
    PHP_SELF www.meine-seite.de
    SERVER_NAME www.meine-seite.de
    HTTP_HOST
    HTTP_REFERER
    HTTP_USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
    SCRIPT_NAME /index.php
    Wie man sieht, wird der Referer nicht übergeben und ich denke genau hier liegt der Hund begraben. Sollte die Variable SERVER_NAME nicht mit der URL des fremden Servers gefüllt sein?
    SzeneBox.org bei Telegram https://t.me/szenebox

  13. #9
    Junior
    Registriert
    Nov 2019
    Beiträge
    72
    Gefällt mir!
    116
    Du gefällst: 17
    Löst du die Anfragen selbst aus?

    VPN aktiviert der den HTTP_REFERER stript?

  14. #10
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    @echterkevin

    Löse die Anfrage selbst aus, von verschiedenen Workstations, ohne VPN oder Proxy. Auch andere Browser getestet (IExplore, Edge, Firefox, Chrome) ohne "Inkognito/Private".

    Hab jetzt im Wordpress auch mal die Stamm-URL auf http:// geändert und im vHost die Weiterleitung auf https:// (wie folgt) aktiviert. Bringt aber auch nichts.

    Code:
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://www.meine-seite.de/$1 [R,L]
    SzeneBox.org bei Telegram https://t.me/szenebox

  15. #11
    Senior
    Registriert
    May 2020
    Beiträge
    356
    Gefällt mir!
    81
    Du gefällst: 310
    Browser in Safe Mode oder mit Custom Settings? Wobei ich hier nicht weiß, wie die aktuellen Standardsettings beim Firefox bezüglich Referer sind. Chrome sollte aber natürlich senden.
    Hast du auch eine Anfrage von einer zweiten Datei auf deinem Server mal ausgelöst oder primär extern?
    Also gemeint: a.php mit einem Link auf b.php und in b.php dann die Ausgabe vom Referer?

    Hier sind zwar viele Gründe sonst noch aufgeführt, warum der Ref leer sein kann, aber keiner passt gefühlt auf deinen Test: https://stackoverflow.com/questions/...ferer-be-empty

    SERVER_NAME sollte nicht mit der URL von deiner Herkunft gefüllt sein, nein. Host und Name können sich unterscheiden, aber trotzdem nur bezogen auf deinen Server. Da sind die ersten Google-Treffer aber eine bessere Quelle als jeglicher Kommentar jetzt von mir.

  16. #12
    THEMENSTARTER

    Avatar von syrius
    Registriert
    Mar 2015
    Beiträge
    2,124
    Gefällt mir!
    1,233
    Du gefällst: 2,816
    Ne wie oben schon geschrieben hab ich es von verschiedenen Workstations und Browsern probiert.

    Interne Verlinkungen hab ich getestet, der Ref wird hier angezeigt.

    Hab jetzt mal zum Test auf einer weiteren Seite die refcheck.php hochgeladen und per Link von meine-seite.de aufgerufen. Auch hier wird der Ref angezeigt. Die beiden Server unterscheiden sich lediglich in der PHP-Version. Sonst ist alles gleich - Aufbau der vHost's, Apache-Version und beide sitzen ohne Proxy hinter CloudFlare.

    Ratlosigkeit macht sich immer breiter ^^

    # edit

    Aufgeklärt! Die Seite, auf der meine-seite.de verlinkt ist arbeitet wohl mit einer referrerPolicy und unterdrückt den Referer. Habs eben von einer anderen Seite aus probiert und er wird übergeben.

    Jetzt ist die Frage, gibt es Möglichkeiten dennoch den Visitor zu identifizieren um ihn auf die richtige Seite zu leiten?
    SzeneBox.org bei Telegram https://t.me/szenebox

  17. #13
    Senior
    Registriert
    May 2020
    Beiträge
    356
    Gefällt mir!
    81
    Du gefällst: 310
    Interne Tests helfen meistens, um äußere Störfaktoren zunächst ausblenden zu können.

    Zitat Zitat von Syrius Beitrag anzeigen
    Jetzt ist die Frage, gibt es Möglichkeiten dennoch den Visitor zu identifizieren um ihn auf die richtige Seite zu leiten?
    Afaik: Wenn die andere Seite nicht mitspielt, nein.
    Andernfalls natürlich über URL-Parameter, bestimmte Art der Links, etc., wie auch beim Partner-Script der SZB.
    Falls es sich nicht um normale Links handelt sondern externe Aufrufe, könntest du über den Origin-Header gehen.

Ähnliche Themen

  1. PHP-FPM und .htaccess URL rewrite
    Von Mono im Forum Technik / Hardware & Software
    Antworten: 2
    Letzter Beitrag: 06.11.2020, 10:19
  2. mod_rewrite @ blazingfast & Woltlab Burning Board
    Von Uranjitsu im Forum Technik / Hardware & Software
    Antworten: 1
    Letzter Beitrag: 13.05.2018, 22:55
  3. (PHP) - Mod_rewrite Probleme nach Apache Upgrade
    Von VTK im Forum Entwicklung / Programmierung
    Antworten: 17
    Letzter Beitrag: 18.02.2016, 19:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org