thomas: mod_rewrite, alle Verzeichnisse ausgeben

Hallo

Meine RewriteRule sollte folgendes können, doch leider zickt sie noch;-)

Pfad: www.domain.ch/restaurant/impressionen oder www.domain.ch/restaurant oder www.domain.ch/restaurant/geschichte/1999

Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.

Mein Code:

  
RewriteCond %{REQUEST_FILENAME} !-f  
  RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]  

leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.

Hat mir jemand einen Tip/Lösung?

Danke und Gruss
Thomas

  1. Hi,

    RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]

    leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.

    Natürlich, denn du hast ja nichts „gefangen“, bzw. “captured” auf Englisch. Dafür sind in regulären Ausdrücken runde Klammern zuständig.

    Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.

    Die Info hast du eh schon, schau in $_SERVER nach.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Salut

      Nun möchte ich per rewrite die gesamten Verzeichnisse nach dem Domainnamen in eine Variable packen damit ich diese per PHP dann weiterverarbeiten kann.

      Die Info hast du eh schon, schau in $_SERVER nach.

      Merci, daran habe ich gar nicht gedacht. Ich hab nun die Rule so umgeschrieben:

        
      RewriteCond %{REQUEST_FILENAME} !-f  
        RewriteRule .* kh/index.php [QSA,L]  
      
      

      und lese dann mittels $_SERVER['REQUEST_URI'] den Pfad aus. Komisch ist nur, dass sobald ich mehr als 2 Verzeichnisstiefen habe, die CSS etc. nicht mehr geladen werden:
      /kh/bar -> geht
      /kh/bar/eins -> CSS wird nicht mehr geladen.

        
      <FilesMatch "\.(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$">  
          RewriteEngine Off  
        </FilesMatch>  
      
      

      Schliesse zwar einige Files aus, doch anscheinend stimmt doch was nicht. Weisst du warum?

      Gruss und Danke
      Thomas

      1. Tach!

        Komisch ist nur, dass sobald ich mehr als 2 Verzeichnisstiefen habe, die CSS etc. nicht mehr geladen werden:
        /kh/bar -> geht
        /kh/bar/eins -> CSS wird nicht mehr geladen.

        Alles eine Frage der richtigen Addressierung. Der Browser berechnet die absoluten URLs von relativ adressierten Ressourcen (CSS, JS, Bilder) anhand der ihm bekannten URL. Wenn du solche Umschreibungen machst, musst du entweder alles absolut adressieren oder ständig die korrekten Prefixe in deine Ausgabe schreiben.

        <FilesMatch ".(htm|php|js|css|htc|png|gif|jpe?g|ico|xml|csv|txt|swf|flv|eot|woff|svg|ttf|pdf|gz)$">
            RewriteEngine Off
          </FilesMatch>

          
        Das ist unnötig, weil existierende Dateien ja schon mit -f ausgeschlossen werden.  
          
          
        dedlfix.
        
  2. Tach!

    RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule .* kh/index.php?catslugs=$1 [QSA,L]

      
    Apache-Konfiguration ist kein Javascript, das Forum kennt lang=apache.  
      
    
    > leitet mir zwar alles auf kh/index.php um, doch die variable ist leer.  
      
    Es fehlt ein gruppierendes Klammernpaar. Alternativ, wenn sowieso das gesamte Muster verwendet werden soll, geht auch $0 ohne weitere Gruppierung.  
      
    
    > Hat mir jemand einen Tip/Lösung?  
      
    Lass den Parameter weg und nimm $\_SERVER['REQUEST\_URI']  
      
      
    dedlfix.