Alf: htaccess Redirect und Variablen

# für dateien mit id  
RewriteRule ^(.*)/([0-9]+)/$ index.php?p=$1&id=$2  
RewriteRule ^(.*)/([0-9]+)$ index.php?p=$1&id=$2  
  
# für einzelne dateien  
 RewriteRule ^(.*)$ index.php?p=$1  
 RewriteRule ^(.*)/$ index.php?p=$1  
  
RewriteCond %{REQUEST_FILENAME} !-d  
# If the request is for a real directory (one that exists on the server), index.php isn't served.  
RewriteCond %{REQUEST_FILENAME} !-f  
# If the request is for a file that exists already on the server, index.php isn't served.  
RewriteCond %{REQUEST_URI} !^/index.php  
RewriteRule ^(.*)$ /page/index.php  
# All other requests are sent to index.php

Ich habe ein Problem mit dem Code oben. Die Zeilen folgenden Zeilen lösen Ablauffehler aus:

RewriteRule ^(.*)$ index.php?p=$1  
 RewriteRule ^(.*)/$ index.php?p=$1

Das Ergebnis soll eigentlich sein, dass ich aus
www.domain.de/page/impressum
dies generiere: www.domain.de/page/index.php?p=impressum

Leider werden dann reale ortner und dateien nicht mehr gefunden. Kennt sich jemand besser aus als ich und kann helfen?

Danke!

  1. Hi,

    Ich habe ein Problem mit dem Code oben. Die Zeilen folgenden Zeilen lösen Ablauffehler aus:

    RewriteRule ^(.*)$ index.php?p=$1

    RewriteRule ^(.*)/$ index.php?p=$1

      
    
    > Leider werden dann reale ortner und dateien nicht mehr gefunden.  
      
    Wie man ausschließt, dass existierende Dateien/Verzeichnisse von RewriteRules erfasst werden, steht doch im gezeigten Code bereits drin und ist auch kommentiert. Du musst es also nur noch für diese Regeln ebenfalls anwenden.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Wie man ausschließt, dass existierende Dateien/Verzeichnisse von RewriteRules erfasst werden, steht doch im gezeigten Code bereits drin und ist auch kommentiert. Du musst es also nur noch für diese Regeln ebenfalls anwenden.

      Ich kann dir folgen, bei der Umsetzung hapert es aber.

      Ich muss also zusätzlich diese beiden Zeilen kopieren und für die Regel verändern:

      RewriteCond %{REQUEST_FILENAME} !-d  
      RewriteCond %{REQUEST_FILENAME} !-f
      

      ...nur wie? Ich kenne mich leider nicht mit der Syntax aus.

      1. Hi,

        Ich muss also zusätzlich diese beiden Zeilen kopieren und für die Regel verändern:

        RewriteCond %{REQUEST_FILENAME} !-d

        RewriteCond %{REQUEST_FILENAME} !-f

        
        >   
        > ...nur wie?  
          
        Warum etwas an denen verändern, die sind doch schön?  
          
        
        > Ich kenne mich leider nicht mit der Syntax aus.  
          
        Dann lies doch mal im Apache-Handbuch diesbezüglich nach.  
        <http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html>  
          
        MfG ChrisB  
          
        
        -- 
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        
  2. Hallo,

    Leider werden dann reale ortner und dateien nicht mehr gefunden. Kennt sich jemand besser aus als ich und kann helfen?

    Hier steckt schon die Antwort auf deine Frage:

    RewriteCond %{REQUEST_FILENAME} !-d

    If the request is for a real directory (one that exists on the server), index.php isn't served.

    RewriteCond %{REQUEST_FILENAME} !-f

    If the request is for a file that exists already on the server, index.php isn't served.

      
    Aber davon abgesehen: Wie kommst du auf die Idee, in deinem Posting Apache-Code als "Javascript" zu taggen? Kein Wunder, dass das Syntax-Hilighting dann etwas seltsam aussieht. ;-)  
      
    Und noch etwas:  
      
    
    > Das Ergebnis soll eigentlich sein, dass ich aus  
    > www.domain.de/page/impressum  
    > dies generiere: www.domain.de/page/index.php?p=impressum  
      
    Auch dir empfehle ich wärmstens, [RFC 2606](http://tools.ietf.org/html//rfc2606) zu lesen und zu beherzigen, und nicht Domainnamen für Beispiele zu verwenden, die tatsächlich existieren und jemand anderem gehören.  
      
    Ciao,  
     Martin  
    
    -- 
    Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.  
    Die Zivilisation hatte begonnen.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(