MB: Header Location Umleitungsfehler

moin community,

ich arbeitete intensiver mit header() in meiner App auf XAMPP. Jedes mal wenn ich die header() mit Location auf meine App redirecte http://localhost:80/app/, passiert ein Umleitungsfehler. Chrom brabbelt da:

ERR_TOO_MANY_REDIRECTS

Wenn ich die Fehlermekldung richtig interpretiere ist das ein dauer umleiter. Aber ich kann es nicht begreifen weil ich nichts dauerhaft umleite. komischerweise bei http://localhost:80/ leitet er schölen brav an die adresse weiter. Aber sobald ich irgendwas in meiner App aufrufe, geschieht ein "Umleitungsfehler" 😕.

Mögliche Fehler Eingrenzung:

Eine .htaccess Dateien leiten immer zur index.php in der App.

lg MB

akzeptierte Antworten

  1. Hi,

    guck mal in die Netzwerkkonsole, da siehst Du wo es loopt.

    MfG

    1. hi pl,

      ahso. Gute Idee! besten dank! wo liegt die den? Sry, ich hab zu meinem bedauern von XAMPP wenig Ahnung. Ich weis nur das nötigste 😕.

      lg mb

      1. hallo

        hi pl,

        ahso. Gute Idee! besten dank! wo liegt die den? Sry, ich hab zu meinem bedauern von XAMPP wenig Ahnung. Ich weis nur das nötigste 😕.

        Die liegt im Browser bei den Browsertools.

        Ohne deine htaccess zu kennen, können wir dir nicht helfen.

        --
        Neu im Forum! Signaturen kann man ausblenden!
        1. moin beatovich,

          Hier die Ordnerstruktur symbolisiert mit "+" mit .htaccess und PHP-Dateien symbolisiert mit (-)

          + webapp
            + app
            + public
              + css
              + img
              - .htaccess
              - index.php
            + system
            - .htaccess
          

          Hier die .htaccess auf der webapp-Oberfläche

          <IFModule mod_rewrite.c>
              RewriteEngine on
              RewriteRule ^$ public/ [L]
              RewriteRule (.*) public/$1 [L]
          </IFModule>
          

          Hier die auf der public-Oberfläche

          <IFModule mod_rewrite.c>
              RewriteEngine on
              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteRule ^(.*)$ index.php [PT,L]
          </IFModule>
          

          hoffe es hilft

          lgmb

          1. hallo

            moin beatovich,

            Hier die Ordnerstruktur symbolisiert mit "+" mit .htaccess und PHP-Dateien symbolisiert mit (-)

            + webapp
              + app
              + public
                + css
                + img
                - .htaccess
                - index.php
              + system
              - .htaccess
            

            Hier die .htaccess auf der webapp-Oberfläche

            <IFModule mod_rewrite.c>
                RewriteEngine on
                RewriteRule ^$ public/ [L]
                RewriteRule (.*) public/$1 [L]
            </IFModule>
            

            Hier die auf der public-Oberfläche

            <IFModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php [PT,L]
            </IFModule>
            

            PT steht für passthrough, was bewirkt, dass die URI nochmals durchgeschleusst wird. Das kann die Ursache für endlose Rekursionen sein

            Beispiel

            RewriteRule ^index.php$ index.php [PT,L]

            sollte das Problem klarmachen.

            --
            Neu im Forum! Signaturen kann man ausblenden!
            1. hmm, ich habs so wie du gemacht. immer noch nach wie vor umleitungsfehler 😕.

              1. hallo

                hmm, ich habs so wie du gemacht. immer noch nach wie vor umleitungsfehler 😕.

                Und was hast du gemacht: Den expliziten Fehler nachgestellt?

                Versuche lieber mal das.

                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]
                

                QSA hängt den QueryString an, falls vorhanden.

                --
                Neu im Forum! Signaturen kann man ausblenden!
                1. saust er immer zum internen XAMPP eigenen dashboad hin 😕. Ich möchte den Pfad noch erwähnen wo meine webapp is: xampp/htdocs/webapp/

          2. hi MB,

            zum Debuggen bitte in die Browserkonsole/Netzwerktab schauen wo die Requests hinlaufen.

            Zu Deine .htaccess: IFModule mod_rewrite.c schön und gut aber was machst Du wenn mod_rewrite nicht geladen ist -- Alternative für die Konfiguration?

            Btw.:

            RewriteRule ^(.*)$ index.php [PT,L]
            

            da fehlt ein Slash, es muss heißen /index.php

            Tipp: Zum Debuggen schalte Rewrite ab! Und fange stattdessen den Request über die ErrorDocument Directive ab. z.B.:

            ErrorDocument 404 /index.php
            

            und den Blick in die Konsole dazu!

            Viel Erfolg!

            1. nabend pl,

              also. Auf deine Anweisungen hin spukt die Browser-Konsole da bei mir folgendes aus. Erst einmal zig gleiche GET's.

              GET http://localhost/webapp/en/default/main/index
              

              wenn ich dann ein GET näherbetrachte ...

              Angefragte Adresse: http://localhost/webapp/en/default/main/index
              Anfragemethode:
              Externe Adresse:    [::1]:80
              Status-Code:        302
              Version:            HTTP/1.1
              

              und dann noch die kopfzeile untersuche ...

              Antwortkopfzeilen (427 B)
              
              Cache-Control:   no-store, no-cache, must-revalidate
              Connection:      Keep-Alive
              Content-Length:  192
              Content-Type:    text/html; charset=UTF-8
              Date:            Sun, 22 Jul 2018 20:23:35 GMT
              Expires:         Thu, 19 Nov 1981 08:52:00 GMT
              Keep-Alive:      timeout=5, max=100
              Location:        http://localhost:80/webapp/en/default/main/index
              Pragma:          no-cache
              Server:          Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/7.1.6
              X-Powered-By:    PHP/7.1.6
              
              Anfragekopfzeilen (401 B)	
              
              Accept:          text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
              Accept-Encoding: gzip, deflate
              Accept-Language: de,en-US;q=0.7,en;q=0.3
              Connection:      keep-alive
              Cookie:          PHPSESSID=i3mr709bvgnm7mbnj3b768mu3c
              Host:            localhost
              Upgrade-Insecure-Requests:	1
              User-Agent:      Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/61.0
              

              ... komt das dabei raus. Schlauer bin ich aber noch nicht geworden 😕

              lgmb

              1. Na,

                Location: http://localhost:80/webapp/en/default/main/index zeigt doch, daß bei einem Request auf dieselbe Location eine Endlosschleife vorliegt.

                MfG

                1. hi pl,

                  ok, dh das ist ein ein geschlichender Bug in meinen PHP Skripten oder? Auf jeden fall vielen Herzlichen Dank dafür. Du hast mir echt weiter geholfen.

                  lgmb

                  1. hi MB,

                    das knn ja gar nicht anders sein. Also irgendwo wird da ein Location-Header angewiesen oder die Serverkonfiguration ist verstrubbelt.

                    Tipp: Bevor Du einen header("location:..") anweist, setze einen Status, z.B. header("HTTP/1.1 302"); oder einfach header("Status: 302"); damit Du das in der Konsole besser findest. Also einen Statuscode der sich von dem unterscheidet den der Webserver spontan setzen würde.

                    MfG