Edgar Ehritt: HTACCESS Rewrite über ein Verzeichnis...<Problem>

Beitrag lesen

Hallo Dan68,

RewriteCond %{REQUEST_FILENAME} /mitglied-([a-zA-Z0-9-]*).html

RewriteRule (.*) /member.php?recordID=%1 [L]


>   
> aus  
> "domain/mitglied-pete-bauer.html"  
> wird  
> "domain/member.php?id=pete-bauer"  
  
nein: domain/member.php?recordID=pete-bauer  
  

> Wie muss ich es anstellen, das es aus einem Verzeichnis (hier "verein" heraus auch funktioniert, z.B.:  
> "domain/verein/mitglied-pete-bauer.html"  
>   
> Ich dachte so, was aber einen 404er bringt:  
> ~~~apache

RewriteCond %{REQUEST_FILENAME} /([a-zA-Z0-9-]*)/mitglied-([a-zA-Z0-9-]*).html  

> RewriteRule (.*) /member.php?recordID=%2 [L]

Zunächst erstmal folgendes zum Verständnis: Die Variable %{REQUEST_FILENAME} hat mit den Angaben des Requests direkt nichts zu tun. Sie beinhaltet den absoluten Pfad der angeforderten Datei (im Eigentlichen also einer Ressource) im Dateisystem. Im einfachsten Fall besteht sie aus der mit der Direktive DocumentRoot angegebenen Basis plus Pfadangaben in %{REQUEST_URI}.

Von Deiner Aufgabenstellung her willst Du aber die Pfadangabe der Anfrage ("domain/mitglied-pete-bauer.html" bzw. "domain/verein/mitglied-pete-bauer.html") verarbeiten. Damit wird offensichtlich, dass Du bereits in den Grundlagen, wenn Du gegen %{REQUEST_FILENAME} prüfst, fehlgehst. %{REQUEST_URI} ist also die Variable, die den zu analysierenden Pfad enthält.
 Denn für den Fall, dass DocumentRoot "/usr/web" wäre, ist für die Anfrage an http://domain/verein/mitglied-pete-bauer.html der Wert von %{REQUEST_FILENAME} "/usr/web/verein/mitglied-pete-bauer.html". Dieses passt nicht auf das CondPattern "/([a-zA-Z0-9-]*)/mitglied-([a-zA-Z0-9-]*).html"

RewriteRule prüft (im ersten Durchlauf) gegen den URL-Pfad der Anfrage. Das entspricht %{REQUEST_URI}. RewriteCond bedarf es also nicht:

RewriteRule /mitglied-([a-zA-Z0-9-]*).html$ /member.php?recordID=$1 [L]

Gruß aus Berlin!
eddi