Regex-Logik?

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

  • Regex-Logik?

    Hallo zusammen,

    ich möchte mit meiner regex (mod_rewrite) folgendes machen:

    wenn eine ganz bestimmte URL-Form verwendet wird -> index2.php
    wenn gar keine Parameter verwendet werden -> index1.php
    wenn keine der beiden Eigenschaften funktionieren -> index.php

    Die Idee dahinter ist folgende: bei der index2.php stehen alle wichtigen Sachen in der URL kodiert und ich muss nichts mehr aus der DB lesen. Bei der index1.php kommt der Besucher zum ersten mal auf die Seite und es muss aus der DB gelesen werden. Stehen Parameter in der URL, es sind aber die falschen, greift keiner der regex und es kommt die Fehlerseite. Dadurch muss ich einmal keine if-Abfragen machen, ob irgendwelche Parameter gesetzt sind und regex übernimmt für mich gleich schon die erste Abprüfung.

    Hier meine .htaccess
    PHP-Code:
    RewriteEngine on
    RewriteBase 
    /
    RewriteRule ([0-9]+)/([0-9]+) index2.php?accountID=$1&pageID=$2&lang=de&version=1
    RewriteRule 
    ([0-9]+)/([0-9]+)/(de|enindex2.php?accountID=$1&pageID=$2&lang=$3&version=1
    RewriteRule 
    ([0-9]+)/([0-9]+)/(de|en)/([0-9]+) index2.php?accountID=$1&pageID=$2&lang=$3&version=$4
    RewriteRule 
    (.{,0}) index1.php 
    So könnte eine URL aussehen: http://localhost/1234/483/de/1

    Wenn alle Parameter angegeben werden klappt das auch wunderbar, nur wenn falsche verwendet werden, z.B. http://localhost/1234/483qwe, leitet er trotzdem auf die index1.php

    Wo ist mein (Denk)Fehler?

    VIELEN DANK!

    strauberry

  • #2
    Hallo,

    ich hab das jetzt mal etwas angepasst und noch das Skip-Flag hinzugefügt. Das Skippen funktioniert aber leider nicht. Wenn ich die letzte Zeile mit der error.php weglasse, funktioniert alles wunderbar. Steht diese Zeile drin, wird IMMER die error.php angezeigt. Wieso das?

    PHP-Code:
    RewriteEngine on
    RewriteBase 
    /
    RewriteRule ([0-9]+)/([a-z0-9_]+)/([a-z]+)/(de|en)/([0-9]+)/([0-9]+) urlindex.php?accountID=$1&template=$2&identifier=$3&lang=$4&version=$5&q=$[S=2]
    RewriteRule ([0-9]+)/([a-z0-9_]+)/([a-z]+)/(de|en)/([0-9]+) urlindex.php?accountID=$1&template=$2&identifier=$3&lang=$4&version=$[S=1]
    RewriteRule (.+) error.php 
    Danke!

    Kommentar

    Lädt...
    X