Verena: 500 Internal Server Error

Hallo,

ich habe folgende htaccess Datei diese sieht wie folgt aus:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/media/

RewriteRule ([a-z]+)$  /$1.php [L]
RewriteRule ([a-z]+)/([0-9]+)$  /$1.php?id=$2 [QSA,L]
RewriteRule ([a-z]+)/([a-z,A-Z,0-9,!]+)$  /$1.php?user=$2 [QSA,L]

bekomme jetzt ein Fehler 500 Internal Server Error

In den Logs steht folgendes:

The server encountered an internal error or misconfiguration and was unable to complete your request.

Gruß
Verena

  1. RewriteCond %{REQUEST_URI} !^/media/  
    
    

    Das !^/media/ verursacht den Fehler. RewriteCond

    RewriteRule ([a-z]+)$  /$1.php [L]

    RewriteRule ([a-z]+)/([0-9]+)$  /$1.php?id=$2 [QSA,L]
    RewriteRule ([a-z]+)/([a-z,A-Z,0-9,!]+)$  /$1.php?user=$2 [QSA,L]

    Sicher, dass da nicht noch ein ^ davor muss bei den regulären Ausdrücken?  
    Bei example.com/bla/th89w4t würde schon die erste RewriteRule matchen.  
      
    MfG  
    bubble
    
    -- 
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    
    1. Hallo,

      vielen Dank für deine Hilfe, hab es nun so geändert und es funktioniert:

      RewriteEngine On
      RewriteBase /

      RewriteCond %{REQUEST_URI} !^/media/
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d

      RewriteRule ^([a-z,-]+)$  /$1.php [L]
      RewriteRule ^([a-z,-]+)/([0-9]+)$  /$1.php?id=$2 [QSA,L]
      RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!]+)$  /$1.php?user=$2 [QSA,L]
      RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!]+)/([a-z,A-Z,0-9,!,.]+)$  /$1.php?user=$2&datum=$3 [QSA,L]

      Gruß
      Verena

      1. RewriteEngine On

        RewriteBase /

        RewriteCond %{REQUEST_URI} !^/media/
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

        RewriteRule ^([a-z,-]+)$  /$1.php [L]
        RewriteRule ^([a-z,-]+)/([0-9]+)$  /$1.php?id=$2 [QSA,L]
        RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!]+)$  /$1.php?user=$2 [QSA,L]
        RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!]+)/([a-z,A-Z,0-9,!,.]+)$  /$1.php?user=$2&datum=$3 [QSA,L]

          
        Btw, wenn du auf die VHost-Konfiguration Zugriff hast, stopf den Kram da rein anstatt eine .htaccess-Datei zu verwenden. Die VHost-Konfiguration wird eigentlich nur beim Serverstart (bzw. wenn man den Server dazu bringt diese neu zu laden) geladen. Eine .htaccess-Datei wird im Gegenzug bei jedem Request geladen.  
          
        Des Weiteren ist es ab einem bestimmten Punkt ratsam, das Routing in ein Script zu packen. (Z.B. wenn du eine statische Routing-Tabelle in der DB hast)  
          
        Das musst du dann auch nicht in einen GET-Parameter stopfen sondern kannst mit $\_SERVER['REQUEST\_URI'] so viel rumspielen wie du willst.  
          
        MfG  
        bubble
        
        -- 
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye