Mod_Rewrite: Die Nächste

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

  • Mod_Rewrite: Die Nächste

    Hallo zusammen

    Ich habe ein ganz simples Problem wie mir scheint, aber ich bekomme es einfach nicht hin.

    Ausgegangen soll von der Domain "test.localhost" ich möchte alle Requests an diese Domain an die index.php im Grundverzeichnis senden. Das mache ich wie folgt:

    Code:
    RewriteRule (.*)  index.php?request=$1 [QSA,L]
    Soweit so gut. Es gibt ein Template-Ordner. Dieser soll nicht von dieser Regel betroffen sein:

    Code:
    RewriteRule template/(.*) - [R,L]
    
    RewriteRule (.*)  index.php?request=$1 [QSA,L]
    Gut nun scheint alles zu funktionieren. Wenn ich einen Request an "test.localhost/testdir/nocheins" (das Directory existiert nicht auf dem Server) sende bekommt meine index.php "testdir/nocheins". Wunderbar. Jetzt habe ich aber ein Verzeichnis "data" das existiert.

    Ein Request an "test.localhost/data[COLOR="Red"]/[/COLOR]" sendet an meine index.php "data/".
    Ein Request an "test.localhost/data" sendet an meine index.php "data" ABER leitet gleichzeitig auch weiter und in der Adresszeile steht danach:

    Code:
    http://test.localhost/data/?request=data
    Wie kann ich das verhindern?

    Danke schon mal für eure Hilfe .

  • #2
    Hallo,

    offenbar verhindert zum Glück die MaxRedirects-Einstellung auf dem Server, dass du einen 500er Fehler bekommst. Das Problem ist, dass Apache die bereits umgeschriebene index.php-URL immer wieder auf (.*) anwenden kann und daher mehrmals umschreibt, bis MaxRedirects erreicht ist. Du solltest – entweder per RewriteCond oder mit einer chained RewriteRule – verhindern, dass einmal umgeschriebene URLs nochmal verarbeitet werden können.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hm okay danke für deine Antwort . Ich habe nun folgendes Versucht, ohne Erfolg:

      Code:
      RewriteCond %{REQUEST_URI} !^(.*)index.php(.*)$
      RewriteRule (.*)  index.php?request=$1 [QSA,L]
      Da müsste er doch eigentlich die Rule nur einmal anwenden können oder? Aber es passiert immer noch das Gleiche.

      Unter einer Chained RewriteRule kann ich mir nichts vorstellen und bei google finde ich auch kein gutes Beispiel ...

      Kommentar


      • #4
        Eigentlich hätte das helfen müssen. Wie sieht denn die gesamte .htaccess aus?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Code:
          RewriteEngine on
          
          Options -indexes
          Options -MultiView
          
          RewriteRule ^template/(.*)$ - [R,L]
          
          RewriteCond %REQUEST_URI !^(.*)index.php(.*)$
          RewriteRule (.*) index.php?request=$1 [QSA,L]
          Das wäre momentan die ganze htaccess-Datei .

          EDIT: Komisch, nachdem ich den Cache des Browsers geleert habe funktionierte es plötzlich (also ohne das er mir "?redirect=data/" in der Adresszeile anhängt). Keine Ahnung wieso.
          Zuletzt geändert von pascal007; 27.09.2011, 19:46.

          Kommentar

          Lädt...
          X