Die .htaccess-Datei: Eine jener Erfindungen, die man im selben Atemzug lobpreist und verflucht. Sie macht Dinge möglich. Und gleichzeitig treibt sie einem den Angstschweiss auf die Stirn.
Also, um die Sache etwas einzugrenzen: Die Datei wird von Webservern verwendet, um die Adressen zu konfektionieren. Standardmässig entspricht der Pfad einer URL der Verzeichnis- und Dateistruktur auf dem Server. Beispiel clickomania.ch/click/indexD.html: Das ist eine Datei indexD.html, die im Ordner click im Rootverzeichnis des Webservers liegt.
Nun ist es aber nicht immer so einfach: Wenn man seine Seiten mit PHP aufbereitet oder mittels einer Datenbank mit Inhalten füllt, dann gibt es keine Struktur im Dateisystem des Webservers, die man als URL abbilden könnte. Es werden vielmehr Parameter an Scriptdateien übergeben.
Bei vielen dynamischen Websites wird nur eine einzige Seite aufgerufen, auch wenn die Site selbst aus Dutzenden, Hunderten oder Tausenden von Unterseiten besteht. Parameter in der Adresse zeigen an, welcher Beitrag aus der Datenbank geholt werden soll.
Weder hübsch noch leicht lesbar
Diese Parameter werden typischerweise mit Fragezeichen übergeben. Das könnte etwa so aussehen: Example.com/Main.php?page=1020
Das ist nun nicht sonderlich hübsch und auch nicht sehr praktisch. Eine gute URL ist auch von einem Menschen einigermassen vernünftig lesbar, zumindest dann, wenn er mit der hierarchischen Struktur und den Schrägstrichen vertraut ist. Für erfahrene Internetnutzer ist eine «schöne» URL durchaus ein Qualitätsmerkmal: Es zeigt, dass sich der Betreiber der Website entsprechende Gedanken gemacht und sich Mühe gegeben hat. Und man erkennt auch übertriebene bzw. fehlgeleitete SEO-Bemühungen oft an der URL. SEO steht für Suchmaschinenoptimierung und führt manchmal dazu, dass irgendwelche Schlagworte in der Adresse auftauchen, die dort nichts verloren haben.
Apropos Suchmaschine: Google empfiehlt in der Hilfe für Webmaster, die «URL-Struktur einfach zu halten»:
Die URL-Struktur einer Website sollte so einfach wie möglich gehalten sein. Organisieren Sie Ihre Inhalte am besten so, dass URLs logisch und in einer Weise konstruiert sind, die für Nutzer sinnvoll ist.
Verwenden Sie lesbare Wörter anstatt langer ID-Nummern, falls möglich. Wenn Sie zum Beispiel nach Informationen zur Luftfahrt suchen, hilft eine URL wie http://de.wikipedia.org/wiki/Luftfahrt zu entscheiden, ob Sie auf diesen Link klicken sollen. Eine URL wie http://www.example.com/index.php?id_sezione=360&sid=3a5ebc944f41daa6f849f730f1 spricht Nutzer viel weniger an.
Irgendwie logisch. Und das kann man über die .htaccess-Datei bewerkstelligen: Man gestaltet die URLs so, dass die Nutzer sie einfach nutzen können. Und man schreibt sie für den internen Gebrauch so um, dass sie den Anforderungen des Webservers, des CMS oder was auch immer entsprechen.
Bots blockieren und Hotlinking verbieten
Man kann mit .htaccess noch mehr anstellen: Man kann gewisse Leute oder Bots fernhalten, das Hotlinking (der Bilderklau) verhindern, schöne Fehlerseiten anzeigen, Verschlüsselung forcieren, das Auflisten von Ordnerinhalten erlauben oder verbieten, Ordner passwortschützen und vieles mehr.
Und vor allem kann man Adressen umschreiben. Ein sehr konkretes Beispiel ist mein Blog, das ein neues CMS erhalten hat. Mit dem haben sich auch die Adressen der Beiträge verändert. Das würde eigentlich dazu führen, dass alle Links irgendwo im Netz ins Leere gehen. Das wäre schade für mich, weil mir dieser Traffic verloren ginge. Es wäre auch schlecht fürs Web, weil es tote Links erzeugen würde.
Mit .htaccess lässt sich das vermeiden: Man schreibt die alten Adressen auf die neuen Adressen um und gibt gleichzeitig einen Code (301) aus, dass diese Veränderung permanent ist. Eine Suchmaschine wie Google wird daraufhin den Link ändern. Und voilà, alle Beiträge sind weiterhin erreichbar, als ob nichts geschehen wäre.

Das ist schon ziemlich grossartig. Doch die Umschreibung richtig zu formulieren, ist alles andere als einfach: Man will nämlich nicht Tausenden von geänderten Adressen aufführen, sondern nur das Prinzip, nach dem alte Links in neue verwandelt werden können.
Die alte Adresse zerlegen und die Bestandteile zur neuen Adresse neu kombinieren
Dazu zerlegt man die alte Adresse in ihre Bestandteile und baut die neue Adresse auf. In Fall meines Blogs wird aus www.clickomania.ch/fp/index.php/2018/… die Adresse blog.clickomania.ch/2018/.., jetzt mit https vornedran, weil verschlüsselt.
Für solche Tricks kommen reguläre Ausdrücke zum Einsatz. Auch das eine grossartige Erfindung, von der ich hier schon geschwärmt habe, hier etwa, hier und hier. Und hier und hier. Und vor allem auch im Beitrag Geschickt suchen und klever ersetzen, in dem ich vor Augen führe, weswegen es auch für Nichtwebdesigner und Normalanwender sinnvoll sein kann, sich mit regex (kurz für Regular expression) herumzuschlagen.
Regex ist nicht wie Fahrrad fahren
Doch auch diese regulären Ausdrücke sind so ein Ding. Denn anders als velofahren verlernt man Regex durchaus. Wenn man nicht häufig damit zu tun hat, wird man den richtigen Ausdruck kaum auf Anhieb hinbekommen. Bei .htaccess ist das deswegen mühsam, weil man nach jedem Versuch die Datei neu auf den Server hochlädt und ausprobiert, ob es funktioniert. Und wenn es nicht funktioniert, hat man keine Ahnung, was das Problem ist.
Darum hier eine lobende Erwähnung des htaccess testers von madewithlove.be. Er nimmt die .htaccess-Datei entgegen, plus eine Testadresse, und zeigt auf, was er daraus macht. Ein rudimentäres Debugging lässt einen erahnen, wo was schief geht. Das macht die Sache zwar nicht zum reinen Vergnügen. Doch es vereinfacht die Sache vor allem dann, wenn Amateure wie ich nach dem Prinzip von Versuch und Irrtum an die Sache herangehen…
Beitragsbild: Umleitung im Holde, Karl-Ludwig Poggemann/Flickr.com, CC BY 2.0