Problem mit regex

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

  • Problem mit regex

    Hallo zusammen,

    ich möchte alle Anfragen, die nicht auf ico|txt|gif|jpg|png|css|swf|mp3|js|gjs enden, an die index.php weiterleiten.

    Mein regex sieht so aus
    PHP-Code:
    RewriteRule !^(.*)BACKSLASH.(ico|txt|gif|jpg|png|css|swf|mp3|js|gjs)$ index.php 
    Bei meinem Hoster gibt das allerdings immer einen 500. Als Antwort habe ich bekommen, dass meine Rule falsch ist und so aussehen muss:
    PHP-Code:
    ^!BACKSLASH.(js|ico|txt|gif|jpg|png|css|swf|mp3|js|gjs)$ 
    Ich verstehe nur nicht, wieso das "!" NACH dem "^" stehen muss. Laut modrewrite.de heißt das "!": !regexp =true wenn der Ausdruck nicht gefunden wird.

    Kann mir da jemand helfen?

    DANKE!

    strauberry
    Zuletzt geändert von strauberry; 21.05.2008, 18:03.

  • #2
    ^ steht für den Beginn des Vergleichsstrings, muss also ganz vorne stehen!

    Kommentar


    • #3
      Re: Problem mit regex

      Vielleicht solltest du dazusagen, dass du das BACKSLASH ausgeschrieben hast, weil das Forum die Biester verschluckt.

      Im übrigen ist mir aber dennoch nicht klar, was das ^ in der Regel deines Hosters da zu suchen hat.

      Das ^.* in deiner Regel ist sowieso überflüssig und trifft immer zu.

      Kommentar


      • #4
        Oh ja, BACKSLASH ist ausgeschrieben :-)
        Ich versteh das auch nicht wirklich vor allem läuft das bei mir auf localhost. Und an der Apache-Version kann das eher nicht liegen...
        Außerdem funktioniert die "korrigierte" Version vom Hoster nicht, weil z.B. www.domain.de/test/test2 nicht gematcht wird (bekomme 404).

        Nochmal @PHP-Desaster: ich hatte das so verstanden, dass das ! eine Negation ist. Also das ganze Ding ist true, wenn der Ausdruck nicht zutrifft. Das ist also nur eine logische Operation und kein Vergleich... oder ist das anders? Deswegen kapier ich immer noch nicht, wieso das ! nicht an erster Stelle steht. Weil der String soll ja mit einem bel. Zeichen (also .*) anfangen => ^.* Das "!" negiert das dann nur... oder nicht?

        EDIT:
        So, hab das Problem gefunden: es hat "RewriteBase /" gefehlt... kA, wieso das reinmuss, aber ok.
        Zuletzt geändert von strauberry; 22.05.2008, 09:56.

        Kommentar


        • #5
          Weil der String soll ja mit einem bel. Zeichen (also .*) anfangen => ^.*
          Nochmal: Das ist absolut überflüssig. Wenn der String mit einem beliebigen Zeichen anfangen darf, dann lass ^.* einfach weg!

          Kommentar

          Lädt...
          X