Ankündigung

Einklappen
Keine Ankündigung bisher.

URL rewrite Regel funktioniert nur manchmal

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • URL rewrite Regel funktioniert nur manchmal

    Hallo,

    für mein PHP Projekt benötige ich eine Regel, die alles auf die index.php umleitet, außer Anfrangen, die das Wort/den Ordner "web" enthalten. Denn in diesem Ordner befinden sich alle anderen Dateien, die für die Webseite benötigt werden, also Bilder, JS, CSS, usw..
    Aktuell sieht meine .htacces Datei so aus:
    Code:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        # Folders / files to exclude from rewrite divided by Pipe goes here:
        RewriteRule (^|/)web(/|$) - [L,NC]
    
        # turn empty requests into requests for "index.php",
        # keeping the query string intact
        RewriteRule ^$ index.php [QSA]
    
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !favicon.ico$
        RewriteRule ^(.+)$ index.php [QSA,L]
    
        RewriteRule ^(.+)$ index.php [QSA,L]
    </IfModule>
    Das funktioniert bei beispielsweise den folgenden URL´s:
    Code:
    http://localhost/~derwunner/application/index/index/
    http://localhost/~derwunner/application/
    http://localhost/~derwunner/application/index/someaction
    http://localhost/~derwunner/application/web/img/einbild.png
    Code:
    
    
    Aber nicht bei:
    Code:
    http://localhost/~derwunner/application/somecontroller/someaction

    Also es funktioniert seltsamer Weise nur, wenn der erste Unter-URL nach "application" "index" heißt, sowie bei allem, was im physischem Ordner "web" liegt. Ich verstehe nicht, warum es teilweise nicht funktioniert. Bei den fehlerhaften Anfragen erhalte ich einen 404er Fehler. Bitte helft mir!


    MFG derwunner

  • #2
    jo die tags gehen.

    sorry ich kann dein problem gerade nicht nachvollziehen, will dir aber rewrite logs ans herz legen:

    https://wiki.apache.org/httpd/RewriteLogLevel

    Kommentar


    • #3
      Das geht bei mir leider nicht, ich kann es in der default-server.conf eintragen und in die .htaccess, kommt immer die gleiche Fehlermeldung:
      Code:
      Invalid command 'RewriteLogLevel', perhaps misspelled or defined by a module not included in the server configuration

      Kommentar


      • #4
        http://lmgtfy.com/?q=Invalid+command...+configuration

        geht nicht gibts nicht!

        Kommentar


        • #5
          Also das ist nun meine Error Log:
          Code:
          [Sun Apr 05 21:20:06.716473 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] add path info postfix: /home/derwunner/public_html/application/forum -> /home/derwunner/public_html/application/forum/start
          [Sun Apr 05 21:20:06.716492 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] strip per-dir prefix: /home/derwunner/public_html/application/forum/start -> forum/start
          [Sun Apr 05 21:20:06.716497 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] applying pattern '(^|/)web(/|$)' to uri 'forum/start'
          [Sun Apr 05 21:20:06.716521 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] add path info postfix: /home/derwunner/public_html/application/forum -> /home/derwunner/public_html/application/forum/start
          [Sun Apr 05 21:20:06.716531 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] strip per-dir prefix: /home/derwunner/public_html/application/forum/start -> forum/start
          [Sun Apr 05 21:20:06.716547 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] applying pattern '^$' to uri 'forum/start'
          [Sun Apr 05 21:20:06.716553 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] add path info postfix: /home/derwunner/public_html/application/forum -> /home/derwunner/public_html/application/forum/start
          [Sun Apr 05 21:20:06.716559 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] strip per-dir prefix: /home/derwunner/public_html/application/forum/start -> forum/start
          [Sun Apr 05 21:20:06.716564 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] applying pattern '^(.+)$' to uri 'forum/start'
          [Sun Apr 05 21:20:06.716578 2015] [rewrite:trace2] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] rewrite 'forum/start' -> 'index.php'
          [Sun Apr 05 21:20:06.716584 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] add per-dir prefix: index.php -> /home/derwunner/public_html/application/index.php
          [Sun Apr 05 21:20:06.716590 2015] [rewrite:trace1] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] internal redirect with /home/derwunner/public_html/application/index.php [INTERNAL REDIRECT]
          Ich frage mich nun, warum er bei "forum/start" das als physischen Pfad hinten anhängen will. Das sollte so eigentlich nicht sein. Auch das sollte auf "index.php" umgeleitet werden und dabei den original URL unangetastet lassen.

          Kommentar


          • #6
            ohne gross drüber nachzudenken, haste schon mal die zweite und die lezte regel gelöscht?
            wie sieht eigenlich deine verzeichnissstructur aus ?

            Kommentar


            • #7
              Im Stammverzeichnis die "index.php" sowie die ".htaccess". Darunter die Verzeichnisse "app", "lib" und "web". Im ordner "app" befinden sich die Anwendungsdaten, also eine Webseite nach dem MVC Pattern. Und der Ordner "lib" enthält das Framework. Im Ordner "web" sind die ganzen Dateien, die für die Webseite benötigt werden, also Bilder, JS, CSS, usw.

              Edit: Auch wenn ich die zwei Regeln auskommentiere, kommt immer noch der gleiche Fehler. Aus irgendeinem Grund will er nach "forum/start" umleiten, jedoch nicht auf die index.php

              Kommentar


              • #8
                Code:
                 [Sun Apr 05 21:20:06.716578 2015] [rewrite:trace2] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] rewrite 'forum/start' -> 'index.php'
                [Sun Apr 05 21:20:06.716584 2015] [rewrite:trace3] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] add per-dir prefix: index.php -> /home/derwunner/public_html/application/index.php
                [Sun Apr 05 21:20:06.716590 2015] [rewrite:trace1] [pid 3472] mod_rewrite.c(468): [client ::1:49427] ::1 - - [localhost/sid#7fed6081f3e8][rid#7fed6062e0a0/initial] [perdir /home/derwunner/public_html/application/] internal redirect with /home/derwunner/public_html/application/index.php [INTERNAL REDIRECT]
                Also es funktioniert seltsamer Weise nur, wenn der erste Unter-URL nach "application" "index" heißt
                ich gehe nach dem log und deinen erklärungen davon aus, dass das stammverzeichniss application heisst. von da aus wird auf die index.php geleitet, das willst du doch?

                Kommentar


                • #9
                  Ja genau, nur leider funktioniert das nicht immer. Das Unterverzeichnis "application" ist nur beispielhaft.

                  Kommentar


                  • #10

                    und wann nicht? gibts da auch logs von?
                    ich muss zugeben ich verstehe dein problem nicht.

                    Kommentar


                    • #11
                      geht:
                      Code:
                      http://localhost/~derwunner/application/index/index/
                      geht nicht:
                      Code:
                      http://localhost/~derwunner/application/somecontroller/someaction
                      

                      Die Frage ist warum letzteres nicht geht, obwohl ja die Regel in der .htaccess eindeutig ist. Logs gibt's dazu nicht, außer die 404 Fehlermeldung. Alles weitere bereits gepostete kam durch Debugging zustande, das heißt mit dieser "Log" Anweisung in der .htaccess

                      Kommentar


                      • #12
                        Logs gibt's dazu nicht, außer die 404 Fehlermeldung. Alles weitere bereits gepostete kam durch Debugging zustande, das heißt mit dieser "Log" Anweisung in der .htaccess
                        sehe nirgengends im post nen 404 logeintrag.
                        das:
                        Invalid command 'RewriteLogLevel', perhaps misspelled or defined by a module not included in the server configuration
                        haben wir ja hinter uns. zudem wäre es für den der zukünftig hier leisst sicher auch informativ was der unterschied zwischen
                        somecontroller/someaction und forum/start ist. zudem ist aplication kein uinterverzeichniss, so wie du es bescfhreibst, sondern das stammverzeichniss. und für die schriftgrösse kann ich nichts.

                        Kommentar


                        • #13
                          Ja, application ist das Stammverzeichnis. "somecontroller/someaction", "forum/start" und "index/index" sind Beispiele für Aufrufe, die alle auf index.php umgeleitet werden sollten. Warum das allerdings nur manchmal der Fall ist, sollte noch geklärt werden. Gerne sehe ich der Lösung des Problems entgegen.

                          Edit: Ich wüsste nicht, was man aus einem 404 Logeintrag herauslesen kann, außer dem Aufruf und dem 404. Von daher sah ich auch keinen Sinn darin, es hier zu posten.

                          Kommentar


                          • #14
                            somecontroller/someaction wird nicht gerewrited ( also gar nicht erkannt, sonst gäbs da ja logs von und quittiert dann mit 404 somecontroller/someaction not found?

                            Kommentar


                            • #15
                              Ja genau..

                              Kommentar

                              Lädt...
                              X