Christian Seiler: mod_rewrite - was mach ich falsch?

Beitrag lesen

Hallo!

Hier mal die komplette .htaccess:

Bei mir funktioniert es problemlos (die .htaccess ist auch korrekt, so, wie sie ist, ich kann dort keinen Fehler erkennen), wenn ich die Zeilen

RewriteRule ^img/([^-]+)-rotwein.png$ _images/beispiel/dummyweinflasche_rot.png [L]

RewriteRule ^img/([^-]+)-weisswein.png$ _images/beispiel/dummyweinflasche_weiss.png [L]
RewriteRule ^img/([^-]+)-rosewein.png$ _images/beispiel/dummyweinflasche_rose.png [L]

  
durch die Zeile  
  

> > > `RewriteRule ^img/([^-]+)-(rot|weiss|rose)wein\.png$ _images/dummyweinflasche_$2.png [L]`{:.language-apache}  
  
ersetze. Gut, ich habe den AuthUserFile-Pfad noch angepasst und eine Test-.htpasswd angelegt mit Dummy-Usern, aber ansonsten Deine .htaccess nicht geändert.  
  
Ich habe die Bilder natürlich nicht, bekomme daher einen 404er, aber in der 404er-Meldung steht:  
  
| The requested URL /\_images/dummyweinflasche\_rot.png was not found on this server.  
  
Also schreibt er korrekt um. Nur zum Vergleich: Mein Apache ist 2.2.8.  
  

> Ein weiterer komischer Fehler ist mir auch bei den letzten drei Regeln aufgefalen...Zuerst sollte das Verzeichnis "icons" heißen, aber bei fünf Buchstaben setzt die Regel auch wieder aus -> so hab ich den Singular genommen "icon"  
  
Das hingegen hat einen Grund: In der Default-Konfiguration des Apache ist /icons/ ein globales Alias auf das Verzeichnis in der die Symbole für die Auto-Indexes enthalten sind (ruf z.B. mal /icons/dir.gif auf, dann weißt Du, was ich meine). Wenn Du z.B. ein Verzeichnis /icons tatsächlich anlegst und dann versuchst, auf eine Datei darin zuzugreifen, wirst Du genauso scheitern, weil /icons schon vorher vom Apache umgebogen wird.  
  
Der Alias ist auch nicht in der zugehörigen VHost-Konfiguration enthalten, der ist global definiert. Einziger Ausweg: Bitte den Serveradmin, den Alias manuell in Deiner VHost-Konfiguration zu überschreiben, d.h. einen neuen Alias in der VHost-Konfiguration zu setzen, der ungefähr so aussieht:  
  
`Alias /icons/ /pfad/zu/deinem/DocumentRoot/icons/`{:.language-apache}  
  
Also wenn in der VHost-Konfiguration z.B. folgendes steht:  
  
`DocumentRoot /var/www/vhost/dev.beispiel.de/htdocs`{:.language-apache}  
  
Dann sollte eine Zeile  
  
`Alias /icons/ /var/www/vhost/dev.beispiel.de/htdocs/icons/`{:.language-apache}  
  
dazu. Kann natürlich nur der Serveradmin machen, der Zugriff auf die VHost-Konfiguration hat.  
  
Das Problem tritt aber wirklich nur bei /icons/ auf, das wie gesagt in der Standardkonfiguration als globales Alias definiert ist. Dein anderes Problem ist mir unerklärlich.  
  
Viele Grüße,  
Christian  

-- 
[Mein "Weblog"](http://del.icio.us/chris_se/servertipps) [[RSS](http://del.icio.us/rss/chris_se/servertipps)]