kostenloser Webspace werbefrei: lima-city


rewrite mit verschiedenen Endungen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    sportinfo

    sportinfo hat kostenlosen Webspace.

    Hallo

    ich habe ein Rewrite Regel, die funktionieren soll,
    egal ob im Aufruf (URL) ein Slash / am Ende ist oder nicht, oder ein .html oder ein .htm

    OK, ich kann einfach alle Regeln in die .htaccess untereinander schreiben

    ohne Slash / am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)$ artikel.php?a=$1&b=$2 [L,QSA]

    mit Slash / am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\/$ artikel.php?a=$1&b=$2 [L,QSA]

    mit .html am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\.html$ artikel.php?a=$1&b=$2 [L,QSA]

    mit .htm am Ende:
    RewriteRule ^([^\/]*)\/([^\/]*)\.htm$ artikel.php?a=$1&b=$2 [L,QSA]



    ---> aber kann man das nicht auch in einer Zeile erledigen,
    so dass Aufruf mit Slash oder ohne Slash oder mit .htm oder mit .html funktioniert

    ... also sowas wie ein "entweder .. oder" ... bzw. .... Liste erlaubter / möglicher Endungen

    irgendwas in Klammern mit ? Fragezeichen und | Oder Zeichen ... aber wie



    Beitrag zuletzt geändert: 14.9.2012 10:47:37 von sportinfo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Ja, das geht in einer Regel:

    RewriteRule ^([^\/]*)\/([^\/]*)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]


    Bei der letzten Matching-Group wird geprüft, ob "ein oder kein Slash am Ende ist" oder "ob .htm oder .html" da steht.
  4. Autor dieses Themas

    sportinfo

    sportinfo hat kostenlosen Webspace.

    hmmm , naja, fast ...

    wenn ich jetzt Aufruf machen wie
    /xxxxx/yyyyy.html


    dann ist in der artikel.php als $_GET['b'] = yyyyy.html

    also das .html wird mit in der GET-Variable übergeben ?
    obwohl es doch Teil der Rewrite-Regel ist ... bei Slash / am Ende passiert das nicht

    ok, das könnte ich mit einem str_replace() wieder raus filtern,
    aber schöner wäre halt doch gleich in $_GET ohne Datei-Endung
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    sportinfo schrieb:
    hmmm , naja, fast ...
    Es gäbe auch eine weitere Möglichkeit, bei der alles nach dem 2. Slash oder dem Punkt ignoriert wird:
    RewriteRule ^([^\/]+)\/([^\/\.]+) artikel.php?a=$1&b=$2 [L,QSA]
    Welche Version deinen Ansprüchen besser entspricht musst du entscheiden.

    Wenn du thomasba's Version verwenden willst kannst du sie wie folgt anpassen, das sollte dein Problem lösen:
    RewriteRule ^([^\/]*)\/([^\/\.]*)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]


    Beitrag zuletzt geändert: 14.9.2012 11:53:26 von hackyourlife
  6. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    In dem Falle wäre es wohl am einfachsten "Ungreedy" zu matchen, das geht mit
    *?


    Dann würde es so aussehen:
    RewriteRule ^([^\/]*)\/([^\/]*?)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]
  7. Autor dieses Themas

    sportinfo

    sportinfo hat kostenlosen Webspace.

    vielen Dank

    habe alle drei "neuen" Versionen ausprobiert, und die funktionieren alle :)

    RewriteRule ^([^\/]+)\/([^\/\.]+) artikel.php?a=$1&b=$2 [L,QSA]
    
    RewriteRule ^([^\/]*)\/([^\/\.]*)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]
    
    RewriteRule ^([^\/]*)\/([^\/]*?)(\/?|\.html?)$ artikel.php?a=$1&b=$2 [L,QSA]


    jetzt kann ich mir ja eine aussuchen ... mal würfeln ...

  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!