basti_p: Frage zu mod_rewrite

Hallo,

ich möchte Folgendes erreichen:

http://www.example.com/admin/pages/

soll mittels mod_rewrite umgeschrieben werden zu

http://www.example.com/admin/index.php?area=pages

Das Verzeichnis "pages" existiert nicht, im Verzeichnis "admin" liegt eine .htaccess mit folgendem Inhalt:

RewriteEngine On
RewriteRule ^/([a-z]*)/$ index.php?area=$1 [QSA, L]

(mod_rewrite ist aktiviert)

Leider wird nur ein Error 404 zurückgegeben - was mache ich falsch?

Vielen Dank,
Grüße Basti

  1. Hi!

    Leider wird nur ein Error 404 zurückgegeben - was mache ich falsch?

    Das herauszufinden hilft das RewriteLog, für dessen Aktivierung man allerdings administrative Rechte benötigt. Ansonsten kannst du nur deine Lösung mit anderen Lösungen für dieses Standard-Problem vergleichen. Dabei auf den Trailing Slash und gegebenenfalls auf RewriteBase achten. Und dann sollte man real existierende Dateien und Verzeichnisse ausschließen, damit der umgeschriebene Request, der dann zu einem internen Redirect mit erneuter Abarbeitung aller Regeln wird, nicht mehr matcht.

    Lo!

    1. Hallo,

      Das herauszufinden hilft das RewriteLog,...

      Ich habe in der httpd.conf den entsprechenden Eintrag hinzugefügt (Xampp) und Apache 2.2 neu gestartet. Die Logdatei wurde angelegt - allerdings bleibt diese leer (auch bei erfolgreichen rewrites); muss ich noch etwas aktivieren?

      Grüße Basti

      1. Hi!

        Das herauszufinden hilft das RewriteLog,...
        Ich habe in der httpd.conf den entsprechenden Eintrag hinzugefügt (Xampp) und Apache 2.2 neu gestartet. Die Logdatei wurde angelegt - allerdings bleibt diese leer (auch bei erfolgreichen rewrites); muss ich noch etwas aktivieren?

        RewriteLogLevel muss noch gesetzt werden.

        Lo!

  2. Hi,

    RewriteEngine On

    RewriteRule ^/([a-z]*)/$ index.php?area=$1 [QSA, L]

    
    >   
    > (mod\_rewrite ist aktiviert)  
      
    klar, sonst würde das auch schon einen 500er auslösen.  
      
    
    > Leider wird nur ein Error 404 zurückgegeben - was mache ich falsch?  
      
    Die RR passt nicht zu deiner Forderung:  
      
    
    > http://www.example.com/admin/pages/  
    > soll mittels mod\_rewrite umgeschrieben werden zu  
    > http://www.example.com/admin/index.php?area=pages  
      
    Der Request lautet in deinem Beispiel auf /admin/pages/, aber die Bedingung sagt, dass der Ausdruck mit einem Slash beginnen und mit einem Slash enden muss, und dazwischen nur Kleinbuchstaben anthalten darf. Ergo: Die Bedingung trifft nicht zu, die RR wird nicht angewendet.  
      
    Lösung: Nimm das Verzeichnis /admin/ in die RegEx mit auf, oder verwende RewriteBase.  
      
    Ciao,  
     Martin  
    
    -- 
    Wie kann es sein, dass ich von 100 Gramm Schokolade zwei Kilo zunehme?  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Hallo,

      Lösung: Nimm das Verzeichnis /admin/ in die RegEx mit auf, oder verwende RewriteBase.

      Danke, der Hinweis auf RewriteBase hat geholfen!

      Grüße Basti

  3. RewriteRule ^/([a-z]*)/$ index.php?area=$1 [QSA, L]

    Das muster passt nicht auf "/admin/pages/" - du willst vermutlich ^/admin/([a-z]*)/$ matchen.