Matti Maekitalo: Gorß/Kleinschreibung von URL's

Beitrag lesen

use Mosche;

gleich zum Problem:  hab vor kurzem eine komplett Homepage auf einen anderen Server "umziehen" lassen. Allerdings unterscheidet der neue Server nach Groß/Kleinschreibung der Verzeichnis und Dateinamen, was nun zu Folge hat das etliche Links/Bilder ect. nicht mehr angezeigt werden.

Zu Beginn: mod_speling sollte, wie bereits gesagt, helfen. Siehe dazu Doku zu mod_speling

Es gibt auch noch eine andere Möglichkeit, die allerdings ein "wenig" häßlich ist:

Du brauchst dazu ein kleines Progrämmchen to_lowercase, Zugriff zur Apache-Konfig und mod_rewrite.

Der Reihe nach:

Benenne erstmal alle Dateien um, so daß sie nur in Kleinbuchstaben geschrieben sind.
Dann speicherst du das untenstehende Programm einfach als to_lowercase ab, außerhalb des DocumentRoot und machst es ausführbar.

<cite to_lowercase>
#!/usr/bin/perl -w
$|++;
print lc($_) while(<STDIN>)
</cite>
Dieses Programm wandelt einfach alles, was es auf der Standard-Eingabe bekommt, in Kleinbuchstaben um.

Dann editierst du die Apache-Konfig und ergänzt folgendes (in deinem VirtualHost):
  RewriteEngine on
  RewriteMap    to_lowercase prg:/dein/pfad/zu/to_lowercase
  RewriteRule   (.*)  ${lowercase:$1}

Folgendes passiert dadurch:
durch RewriteEngine schaltest du mod_rewrite an.
Die RewriteMap-Direktive definiert quasi eine "Funktion" namens to_lowercase, die den übergebenen String in Kleinbuchstaben verwandelt und zurückgibt (das macht das to_lowercase-Programm).
Die RewriteRule am Ende wandelt alle Zugriffe auf die die entsprechend klein-geschriebene URL  um.

use Tschoe qw(Matti);

--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
Webapplikationen in C++ entwickeln