htaccess - konfiguration des webhosting accountsDie alten Hasen mögen mir verzeihen, aber das WWM ist ja nicht nur für Experten da, sondern soll eben auch Quereinsteigern helfen.  So reagiere ich mal auf häufige Support Anfragen nach individueller Server Konfiguration welche sich mittels .htaccess bewerkstelligen lässt, sofern vom Provider nicht verboten 🙂

Eine .htaccess (die wird wirklich EXAKT so geschrieben, inklusive dem Punkt am Anfang)  ermöglicht zusätzlich zur allgemeinen Serverkonfiguration, die Konfiguration für einzelne Verzeichnisse oder Dateien des Servers.  Zur Verwendung legt man eine Datei mit dem Namen .htaccess in das Verzeichnis in welchem die Regel/Option gelten soll, die Datei wirkt auch auf alle darunter liegenden Ordner und deren Inhalte (recursiv). Hier einige Anwendungs-Beispiele.

Verzeichnis Browsing / Indexierung:

Options +Indexes
(Um Options Anweisungen aus zu schalten einfach statt + ein – setzen.)
Wenn man beim Aufrufen eines Ordners keine spezielle Datei angibt, aber keine index.xxx Datei hinterlegt ist, kann der Server eine Index erstellen(Beispiel) und damit eine Liste der im Ordner befindlichen Dateien.  Das mag Sinn machen für Verzeichnisse wo Stöbern  ausdrücklich erwünscht ist, aber kann ebenso eine Sicherheitslücke sein wenn es sich um Script-Ordner handelt, in denen es niemanden etwas angeht welche Dateien darin noch liegen und wie diese heißen. Ist der Server so eingestellt, dass die automatische Indexierung von Serverseite verboten ist, bekommt man eine ” 403 Forbidden” Meldung an Stelle des Inhalts.

SSI Aktivieren (Server Side Includes)

Options +Includes

SSI ist seit der Verbreitung von PHP zwar nur noch selten genutzt, aber mit Hilfe von Server Side Includes (auch unter der Abkürzung SSI bekannt) kann man direkt innerhalb von HTML-Dateien dynamische Informationen einbinden.

Startseite/Reihenfolge festlegen

DirectoryIndex index.htm index.php start.html

Ein normaler Webserver wird beim Aufrufen einer Domain oder eines Ordners immer als erstes nach einer index Datei suche. In der Serverconfig ist festgelegt ob erst die index.htm oder die index.html oder index.php etc. Mit oben stehender Anweisung, kann man für seine Ordner hierzu eine eigene Reihenfolge definieren.

Der Webserver wird die Startseiten in dieser Reihenfolge ausgeben. Ist eine index.htm vorhanden, wird diese angezeigt, ist sie nicht vorhanden, wird der Server index.php versuchen und so weiter.

Eigene Fehlerseiten

ErrorDocument 404  /fehler.php

Wenn eine aufgerufene Datei nicht vorhanden ist, antwortet der Server mit einem Status / Fehler Code 404 “Datei nicht gefunden”.  Mit oben stehender Zeile, kann eine Datei definiert werden, welche angezeigt wird, wenn eine Datei nicht gefunden wird.  Ebenso können andere Fehlermeldungen abgefangen werden, wie  403 (Unerlaubter Zugriff) oder  500 (Serverfehler).
Aber Vorsicht ! Wenn Sie die dort definierte Datei bei späteren Änderungen einfach von Server löschen ohne diese Zeile zu ändern, kann es sein das Ihnen Ihr Provider den Account sperrt, da es zu einer Fehlerschleife kommen kann. Datei nicht gefunden ->  zeige error.php -> error.php nicht gefunden -> zeige error.php an …

Auf die CGI Variante von PHP Umsteigen

AddHandler php4-cgi .php oder
AddHandler php5-cgi .php

Dies ist natürlich von Provider zu Provider unterschiedlich, im Zweifel dort nach dem richtigen Eintrag fragen.  Bei einigen Providern (wie auch bei Suleitec)  z.B. sind exec() und andere Systembefehle in der Apache Version von PHP aus Sicherheitsgründen deaktiviert, diese können allerdings genutzt werden wenn man auf PHP als CGI Modul zurück greift.

Beliebige Dateien ausführen

AddHandler php .teufel

Um nicht nur .php sondern jede beliebige Dateiendung auszuführen dient obrige Zeile, hier das Ergebnis.  Aber Vorsicht, wird die Zeile aus der .htaccess entfernt,  werden nicht php Typische Dateien eventuell als Klartext / Quellcode im Browser angezeigt oder zum Download angeboten,was Sicherheitstechnisch in einem Fiasko enden kann 🙂

Mod Rewrite

RewriteEngine On

In Zeiten von Google macht es Sinn, zu lange und unleserliche Links zu “verschönern” und Suchmaschinen-Freundlich zu gestalten. Aktiviert wird ModRewrite mit oben stehender Zeile. Die Liste der Detaillierten Möglichkeiten ist allerdings Endlos lang und kann hier nicht erläutert werden.
Anleitung Apache 1.3
Anleitung Apache 2.0

Redirekt 301

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.Quell-Domain.de$
RewriteRule ^(.*)$ http://www.Ziel-Domain.net/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^Quell-Domain.de$ [NC]
RewriteRule ^(.*)$ http://www.Ziel-Domain.net/$1 [R=301,L]

Der Redirekt 301 ist der wichtigste aller Redirekts, er nennt sich auch “permanent redirekt”  und ist die Suchmaschinen-Freundliche Art der Weiterleitung um doppelten Content zu vermeiden. Eine ausführliche Auflistung der 301 Methode findet sich in folgendem -> Artikel.