Anatol: mod-rewrite: Fake-Ordner in URL-query verwandeln

Beitrag lesen

Hallo Forum!

Ich habe schon einiges zu diesem Thema gelesen und auch selbst eine Lösung gefunden, bin aber noch nicht 100%ig glücklich damit.

Ich möchte eine vom User aufgerufene URL wie z.B.

www.domainname.com/bettyboo/guestbook/20060217/

auf eine Seite mit URL query weiterleiten, die die Namen der Ordner als Argumente übergibt. z.B:

www.domainname.com/index.php?argument1=bettyboo&argument2=guestbook&argument3=20060217

Ich habe eine Lösung gefunden die gut funktioniert (sowohl mit als auch ohne abschließendem '/'). Meine .htaccess-Datei sieht folgendermaßen aus:


RewriteEngine on
Options +FollowSymlinks
RewriteBase /

ueberprueft, ob das File/der Ordner tatsaechlich existiert, wenn ja, diesen Ordner/dieses File anzeigen

RewriteCond %{REQUEST_FILENAME}  -d [OR]
RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule  ^.*$  -  [L]

RewriteRules um Namen der Fake-Ordner an Datei mit Argumenten zu uebergeben

RewriteRule ^(.*[^/])/(.*[^/])/(.*[^/])/(.*[^/]) errors/404.html [QSA,L]
RewriteRule ^(.*[^/])/(.*[^/])/(.*[^/])/*$       index.php?argument1=$1&argument2=$2&argument3=$3 [QSA,L]
RewriteRule ^(.*[^/])/(.*[^/])/*$                index.php?argument1=$1&argument2=$2 [QSA,L]
RewriteRule ^(.*[^/])/*$                         index.php?argument1=$1 [QSA,L]


Ich habe noch nicht viel getestet, aber es scheint zu funktionieren.

Nun hätte ich zwei Fragen:

1. Versucht der User in diesem Fall tiefer als 3 Unterordner zu gehen, so wird auf die Datei 404.html weitergeleitet. Gibt es eine Möglichkeit, das so hinzubekommen, dass auch ein logscript den 404 Error mitbekommt (also für eine Statistik?) Ist nicht so wichtig, aber es wäre ganz nett.

2. Eigentlich wollte ich eine "unlimitierte" Anzahl von Argumenten ermöglichen. D.h. wenn ein User die Seite www.domainname.com/1/2/3/...etc.../999 aufruft, dann werden alle Unterordnernamen als Argumente übergeben
(index.php?argument1=1&argument2=2&...etc...&argument999=999).
Kann ich das nicht irgendwie erreichen (ohne "unendlich" viele Zeilen wie in obigem .htaccess-File zu schreiben)? Per mod-rewrite könnte ich dann zwar auf keinen 404 Error mehr weiterleiten, das wäre mir aber auch egal. Das könnte ich ja auch von PHP aus steuern.

Ich bin für alle Anregungen dankbar.

Schöne Grüße
Anatol