Ergebnis 1 bis 6 von 6

Thema: Fehlerhafte Weiterleitung - Interne/Externe URL

  1. #1
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard Fehlerhafte Weiterleitung - Interne/Externe URL

    Hallo zusammen,

    wenn ich bei meiner Website das Kontaktformular verwende, schlägt die Weiterleitung fehl, es kommt eine Fehlermeldung Error 404 - Objekt nicht gefunden.
    Die eingebenen Daten werden allerdings korrekt per E-Mail verschickt.

    Grund für die Fehlermeldung ist offenbar eine falsch generierte URL.

    Statt

    domain.de/weiterleitungsseite

    sieht es in etwa so aus:

    domain.de/interne-ip/contaoverzeichnis/weiterleitungsseite

    Das Problem ist also, dass man nicht weitergeleitet wird und zudem noch die interne IP präsentiert bekommt.

    Ich habe allerdings absolut keine Ahnung wie der interne Pfad da reingelangen kann.


    Ich bitte um Hilfe

  2. #2
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Ich gehe mal davon aus, dass es nicht ein Problem des Formulars ist, sondern irgendwelche anderen fehlerhaften Einstellungen.

    Ein ähnliches Ergebnis wie oben beschrieben habe ich nämlich auch beim Aufruf des Backend-Logins über die öffentliche Adresse. Abgesehen von einer fehlerhaften Darstellung kommt dann eben beim Loginversuch auch diese falsche URL-Weiterleitung (domain.de/interne-ip/contao-verzeichnis/contao). Der Backend-Login ist also nur intern über die private IP des Servers möglich.

    Edit:

    https://github.com/contao/core/issues/4615

    Hier wird wie mir scheint das gleiche Problem beschrieben, die vorgeschlagene Anpassung der function url in der Datei environment.php führt allerdings nur dazu, dass die interne IP bei der Weiterleitung verschwindet.

    Also statt wie bisher:
    "domain.de/interne-ip/contaoverzeichnis/weiterleitungsseite"

    sieht es jetzt so aus:
    "domain.de/contaoverzeichnis/weiterleitungsseite"

    Scheint wie ein Schritt in die richtige Richtung, aber solange das "/contaoverzeichnis" in der URL bleibt, bleibt auch die Fehlermeldung.
    Geändert von hermes2.11 (07.01.2014 um 08:13 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Leider noch keine Antworten!

    Nach längerer Recherche hat mir auch dieser Thread ein Stück weitergeholfen:

    https://community.contao.org/de/show...ischen-Eintrag

    Wie in meinem letzten Beitrag beschrieben ist in der URL quasi nur noch das Contaoverzeichnis zu viel.

    Allerdings muss ich hier wohl unterscheiden zwischen lokalem Backend-Zugang
    "lokale-ip/contaoverzeichnis/contao"
    und dem öffentlichen Backend-Zugang über das Internet
    "domain.de/contao"

    Bei ersterem ist das Contaoverzeichnis zwingend notwendig, beim zweiten allerdings darf es nicht vorkommen (weil die Seite sonst nicht gefunden wird).

    Wenn ich in der Environment.php in der function base den Teil "TL_PATH", der ja für das Verzeichnis steht, entferne, funktioniert im öffentlichen Zugang auf der jeweils ersten Seite (!) alles wie es soll. Das Formular leitet nach dem Abschicken richtig auf die Dankeseite weiter. Der öffentliche Backend-Zugang fügt aber nach Eingabe der Logindaten bei der Weiterleitung wieder das /contaoverzeichnis in die URL ein - es kommt zur Fehlermeldung. Der lokale Backendlogin funktioniert nicht mehr, da hier ja jetzt das Contaoverzeichnis fehlt.

    Vorher:
    PHP-Code:
    protected function base()
        {
            return 
    $this->url TL_PATH '/' ;
        } 
    Nachher:
    PHP-Code:
    protected function base()
        {
            return 
    $this->url '/' ;
        } 
    Problem:
    Es müsste in der Funktion immer geprüft werden, ob der Host der Domain oder der lokalen IP entspricht und dementsprechend jeweils das TL_PATH hinzufügen oder weglassen.

    Die Frage ist nur wie (Syntax, if-Bedingung) und ob bei jedem Seitenaufruf und bei jeder Weiterleitung auf diese Funktion zugegriffen wird oder ob das TL_PATH auch noch von einer anderen Stelle kommt.


    Edit:

    Vielleicht wäre es besser diesen Thread zu verschieben, da es sich ja nicht mehr um ein Formularproblem handelt?
    Geändert von hermes2.11 (09.01.2014 um 12:38 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Mittlerweile konnte ich die Probleme mit viel Geduld und nach langem Suchen und Testen selbst beheben.

    Hier die Zusammenfassung der Anpassungen in der Environment.php:



    In der "function requestUri" entferne ich mittels str_replace das Contaoverzeichnis :

    PHP-Code:
    protected function requestUri()
        {
            if (!empty(
    $_SERVER['REQUEST_URI']))
            {

                return 
    str_replace('contaoverzeichnis/'''$_SERVER['REQUEST_URI']);
            }
            else
            {
                return 
    '/' preg_replace('/^\//i'''$this->scriptName) . (!empty($_SERVER['QUERY_STRING']) ? '?' $_SERVER['QUERY_STRING'] : '');
            }
        } 


    Die Änderung in der "function url" entfernt die lokale IP aus der URL (siehe zweiter Beitrag):

    PHP-Code:
    protected function url()
        {
            
    $protocol $this->ssl 'https://' 'http://';
            
    $host $this->host;

            return 
    $protocol $host;
        } 


    In der "function script" ersetze ich die Variable TL_PATH durch den festen Wert (Contaoverzeichnis, entspricht dem Eintrag in der pathconfig.php):

    PHP-Code:
    protected function script()
        {
            return 
    preg_replace('/^' preg_quote('/contaoverzeichnis''/') . '\/?/i'''$this->scriptName);
        } 


    In der "function base" wird TL_PATH entfernt (siehe Beitrag #3):

    PHP-Code:
    protected function base()
        {
            return 
    $this->url '/' ;
        } 
    Jetzt funktioniert die Website selbst, das Formular samt Weiterleitung auf eine Danke-Seite (sogar mit Request Token) und der öffentliche Backend-Zugang.

    Würde mich über Feedback freuen, schließlich kann ich nur schlecht beurteilen inwiefern die Änderungen gut, sinnvoll, sinnlos, gefährlich (...) sind.

    Bis dahin gebe ich mich damit zufrieden, dass alles funktioniert wie es soll.


    MfG

  5. #5
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Update:

    Die "function base" muss in meinem Fall doch nicht geändert werden, bzw. hat es scheinbar keine Auswirkungen.

    Den Verzeichnis-Eintrag in der pathconfig.php musste ich entfernen. Ansonsten gäbe es Probleme (imho mit der Definition von TL_PATH in der initialize.php).

  6. #6
    Contao-Nutzer
    Registriert seit
    06.01.2014.
    Beiträge
    40

    Standard

    Der Vollständigkeit halber:

    Nach dem Update unserer Websites von Contao 2.11 auf Contao 3.2 haben wir die Environment.php unter /system/modules/core/library/Contao/ an drei Stellen folgendermaßen ändern müssen (notwendig ab Contao 3.X):

    PHP-Code:
    protected static function requestUri()
        {
            if (!empty(
    $_SERVER['REQUEST_URI']))
            {
                return 
    str_replace('contaoverzeichnis/'''$_SERVER['REQUEST_URI']);
            }
            else
            {
                return 
    '/' preg_replace('/^\//''', static::get('scriptName')) . (!empty($_SERVER['QUERY_STRING']) ? '?' $_SERVER['QUERY_STRING'] : '');
            }
        } 
    PHP-Code:
    protected static function url()
        {
            
    $xhost = static::get('httpXForwardedHost');

            return (static::
    get('ssl') ? 'https://' 'http://') . $xhost;
        } 
    PHP-Code:
    protected static function script()
        {
            return 
    preg_replace('/^' preg_quote('/contaoverzeichnis''/') . '\/?/''', static::get('scriptName'));
        } 

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •