Jnnbo: RewriteRule

Moin,

RewriteRule ist für mich wie ein Buch mit sieben Siegeln. In meiner Datei steht folgendes:


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule projekt/([^/]*)(.*)$             		detail.php [l]

Mit diesen Zeilen erreiche ich, dass ich ein Projekt so aufrufen kann: /projekt/test-update

Jetzt möchte ich noch eine Stufe weiter runter gehen und zwar: /projekt/test-update/xyz


RewriteRule projekt/([^/]*)(.*)/([^/]*)(.*)$        benefits-detail.php [l]

Der Eintrag wird absolut nicht berücksichtigt. Ich verstehe allerdings wie oben schon geschrieben die RewriteRule überhaupt nicht. Könnt ihr mir vielleicht auf die Sprünge helfen?

  1. Moin,

    hab etwas gebastelt und so schneit es zu funktionieren, ob es natürlich richtig ist, kann ich nicht sagen:

    
    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php
    
    RewriteRule projekt/([^/]*)$                    detail.php [l]
    RewriteRule projekt/([^/]*)/([^/]*)(.*)$        benefits-detail.php [l]
    
    
  2. Moin

    
    
    > RewriteRule projekt/([^/]*)(.*)$             		detail.php [l]
    > 
    
    

    OK, schauen wir mal. Diese Rule sagt das "projekt/" gefolgt von einem String der kein "/" enthalten darf, gefolgt von irgend einer Zeichenkette auf detail.php umleitet

    Also auch "/projekt/test-update/xyz". Denn dies entspricht auch dieser Regel.

    
    
    > RewriteRule projekt/([^/]*)(.*)/([^/]*)(.*)$        benefits-detail.php [l]
    > 
    
    

    Hier möchtest du "projekt/" gefolgt von einem String der kein "/" enthalten darf, gefolgt von irgend einer Zeichenkette gefolgt von einem "/" gefolgt von einem String der kein "/" enthalten darf, gefolgt von irgend einer Zeichenkette umleiten zu benefits-details.php

    Versuchs mal so:

    
    # zuerst die qualifiziertere Regel
    RewriteRule projekt\/([^/]*)\/([^/]*)$        benefits-detail.php [L]
    # dann die gröbere Regel
    RewriteRule projekt/([^/]*)$             		detail.php [L]
    
    

    das [L] steht übrigens für Last (letzte Regel) nach dem Umleiten dreht hier das ganze noch eine Runde. Jedoch ohne Eingreifen der Regeln, da nicht mehr gültig.

    Wenn dies nicht die gewünschte Lösung sein sollte, musst du nochmal bissl näher erklären was du bezweckst.

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)