Am 13.12.2011 12:42, schrieb Gustaf Mossakowski:
> Stefan Dreyer schrieb:
>
>> Ich möchte gerne folgende URLs umschreiben:
>>
>>
http://vhost.domain.example/upload/image/11.jpg
>> in
>>
http://vhost.domain.example/upload/vhost/image/11.jpg
>>
>> Wobei vhost ein Wildcard ist, dass heißt eine beliebige Subdomain sein kann.
>> Das habe ich mal probiert:
>>
>> RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.domain\.example$
>> RewriteRule upload/(.*) %{HTTP_HOST}/upload/$1 [C]
>> RewriteRule ^([^.]*)\.domain\.example/upload/(.*)$ /upload/$1/$2 [L]
>> [...]
>> Wo ist mein Denkfehler? Bzw. wie kann ich sicherstellen, dass die
>> RewriteRule nur einmal angewendet wird?
>
> Schreib die RewriteRule in die httpd.conf, dann sollte sie eigentlich
> nur einmal angewendet werden. Wenn Du eine .htaccess-Datei benutzt, muß
> der Apache immer wieder von vorne anfangen, wenn er eine URL aufgelöst
> hat, findet dann die .htaccess und versucht sie, erneut aufzulösen.
Das wusste ich noch nicht. Gibt es dazu irgendwo genauere Informationen?
> Einfacher ist sicher, die Verzeichnisse unterschiedlich zu benennen.
> Also in diesem Fall das interne Verzeichnis, so wie es ist,
> beispielsweise upload_ zu nennen. Dann gibt es die Probleme nicht.
Das habe ich zwischenzeitlich auch so gemacht, bzw. habe ich, damit ich
in der Applikation nichts ändern muss einfach das zweite Verzeichnis als
symbolischen Link gelegt. Im Übrigen habe ich auch entdeckt, dass man
sich (zumindest ab apache 2.2) die 2. Zeile sparen kann und folgendes
schreiben:
RewriteCond %{HTTP_HOST} ^([a-z0-9\-]+)\.domain\.example$
RewriteRule ^upload/(.*)$ /dateien/%1/$1 [L]