Problem mit regex

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by strauberry; 21-05-2008, 18:03.

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

    Comment


    • #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.

      Comment


      • #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.
        Last edited by strauberry; 22-05-2008, 09:56.

        Comment


        • #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!

          Comment

          Working...
          X