.htaccess

ohne Zugang zum Hosting bleibt manchmal nur die Editierung der .htaccess um gewünschte Sachen umzusetzen

Eine .htaccess Datei befindet sich in der Regel im Basisverzeichnis einer Webseite (das Verzeichnis, das in den Domain Einstellungen als Zielpfad eingetragen ist).

Die Einstellungen sind im aktuellen Verzeichnis und allen Unterverzeichnisse wirksam. Mit einer .htaccess Datei in einem Unterverzeichnis lassen sich jedoch Einstellungen überschreiben.

Die .htaccess Datei wird bei jedem Aufruf des Apache Webservers und für jede einzelne Komponente der Webseite ausgewertet. Wenn eine Seite aus 1 HTML Datei, 5 CSS Dateien, 10 Javascript Dateien und 40 Bildern/Icons besteht, wird die .htaccess Datei beim Aufruf der Webseite also 56 mal durchlaufen.

Der Webserver ist übrigens sehr pingelig was die korrekte Schreibweise der Einträge angeht. Der kleinste Fehler führt in der Regel zu einem "Server Error 500". Daher muss nach jeder Änderung an der .htaccess Datei geprüft werden, ob die Webseite noch aufgerufen werden kann.

Die Weiterleitung von Domains und Anfragen zu einzelnen Webseiten ist eine der Hauptanwendungen der .htaccess Datei. Das notwendige Apache Modul mod_rewrite ist in unseren Hosting Tarifen vorhanden.

Die Weiterleitung muss jedoch in der .htaccess Datei zunächst mit folgendem Eintrag aktiviert werden (in den weiteren Beispielen habe ich folgende Zeile weggelassen, also bitte ein Mal oben in der Datei einfügen):

Der Weiterleitung (Redirect) sollte man noch einen Statuscode mitgeben: 301 oder 302. Worin liegt der Unterschied?

  • 301: die Weiterleitung ist dauerhaft, z.B. weil die Navigationsstruktur einer Webseite umgestellt wurde
  • 302: die Weiterleitung erfolgt nur vorübergehend, anschließend gilt wieder die bisherige Adresse

Am Ende der RewriteRule Zeile wird der Code für die Weiterleitung (Redirect) in eckigen Klammern angegeben. Mit dem zusätzlichen Parameter L (Letzter, Last) kann man festlegen, dass die weiteren Anweisungen in der .htaccess Datei ignoriert werden sollen. Hierzu ein Beispiel:

Damit wird die Seite domain.tld/neues.html dauerhaft auf domain.tld/aktuelles.html weitergeleitet.
Die Schreibweise der Rewrite Regeln basiert dabei auf "Regulären Ausdrücken" (Regular Expressions, regex).

Mit den Zeichen ^ und $ wird Anfang und Ende der umzuleitenden Seite gekennzeichnet. Der Punkt . steht in regulären Ausdrücken für ein beliebiges Zeichen, wenn wir wirklich einen Punkt meinen, dann wird dies mit einem Backslash \ gekennzeichnet (\ bedeutet also: exakt das nächste Zeichen).

Sollen alle Seiten einer Domain ausschließlich über eine SSL-Verbindung aufgerufen werden, so kann dies über einen Eintrag in der .htaccess Datei im Startverzeichnis der Domain eingerichtet werden:

In der ersten Zeile wird die Funktion zum Umschreiben von URLs im Apache Webserver aktiviert. In der zweiten Zeile wird die Bedingung definiert "Wenn der Aufruf nicht auf Port 443 erfolgt" (Port 443 wird für SSL-Verschlüsselung verwendet, Port 80 für unverschlüsselte Aufrufe). Zeile 3 ist die Regel für das Umschreiben der URL. Wenn die Bedingung aus Zeile 2 zutrifft, werden die Aufrufe einer beliebigen Seite auf die gleiche Domain (${HTTP_HOST}) jedoch über das https:// Protokoll umgeleitet. Mit /$1 wird die ursprüngliche URL (z.B. impressum.html) an den Domainnamen angefügt. Mit dem Parameter [L] wird angegeben, dass das Umschreiben der URLs hier enden soll, weitere Zeilen in der .htaccess Datei werden also ignoriert.

Alternativen

Auf einer Webseite können "Anker" als Sprungmarke gesetzt sein. Beim Aufruf wird im Browser nicht auf den Anfang der Seite sondern direkt zum Ankerpunkt gesprungen. Der Anker wird durch ein Hash-Zeichen # in der URL gefolgt vom Namen der Sprungmarke gekennzeichnet. Beispiel für eine Adresse mit Anker:

domain.tld/aktuelles.html#artikel25

Soll per .htaccess Weiterleitung direkt auf eine Sprungmarke verwiesen werden, muss der zusätzliche Parameter NE (No Encoding) in eckigen Klammern angegeben werden:

Mit folgendem Eintrag in der .htaccess Datei werden alle Aufrufe für domain.net nach domain.de weitergeleitet:

Die Weiterleitung nach domain.de erfolgt dabei mit dem Statuscode 301 (permanent), so dass auch in Suchmaschinen auf Dauer nur diese erscheint. Dadurch werden Probleme mit "doppeltem Inhalt" (Duplicate Content) vermieden. Alle bei der ursprünglichen Domain übermittelten Parameter werden an die Zieldomain weitergegeben.

Mit folgendem Eintrag in der .htaccess Datei werden alle Aufrufe für eine Domain ohne www auf die Variante mit www weitergeleitet:

Die Weiterleitung nach domain.de erfolgt dabei mit dem Statuscode 301 (permanent), so dass auch in Suchmaschinen auf Dauer nur diese erscheint.

Alternative:

Die Weiterleitung nach domain.de erfolgt dabei mit dem Statuscode 301 (permanent), so dass auch in Suchmaschinen auf Dauer nur diese erscheint.

Mit folgendem Eintrag in der .htaccess Datei werden alle Aufrufe für eine Domain mit www auf die Variante ohne www weitergeleitet:

Die Weiterleitung nach domain.de erfolgt dabei mit dem Statuscode 301 (permanent), so dass auch in Suchmaschinen auf Dauer nur diese erscheint.

Bestimmte Domains oder Subdomains sollen entweder mit oder ohne www auf eine bestimmte Unterseite weitergeleitet werden.

http://www.domain.de/index.php?id=7
soll nach
http://www.domain.de/impressum.html
umgeleitet werden. Der Parameter(7) muss abgefragt werden:

Der DirectoryIndex bzw. die DirectoryIndex-Direktive ist eine Konfigurationsoption des Apache-Webservers, mittels welcher der Index / die Startseite von Verzeichnissen definiert wird. Somit ist der DirectoryIndex auch dafür verantwortlich, welche Seite beim Aufruf der Domain als Startseite angezeigt wird.
Ziel: Wir möchten erreichen, dass

  1. die Datei default.shtml als Startseite verwendet wird
  2. die Datei start.html herangezogen wird, falls default.shtml nicht vorhanden ist
  3. die Datei index.php verwendet wird, falls weder default.shtml noch start.html existieren

Manchmal ist es notwendig, z.B. bei einem Angriffsversuch auf die Webseite, bestimmte IP-Adressen vom Aufruf der Webseite auszusperren,. Über den folgenden Eintrag in der .htaccess Datei (vor dem Eintrag 'RewriteEngine On') im Startverzeichnis der Seite lassen sich unerwünschte Besucher abweisen:

Bei mehreren IP Adressen wird jede in eine eigene Zeile eingetragen. Die Einstellung ist auch für alle Unterverzeichnisse gültig. Versucht jemand mit einer gesperrten Adresse die Seite aufzurufen erhält er dadurch einen 403 Fehlercode (Zugriff verweigert).

für eine 404 - Seite, welche für die gesamte Webseite gilt wird in die root-.htaccess eingefügt:

sollte es für bspw. Sprachversionen verschiedene 404-Seiten geben: in die entsprechenden Sprachverzeichnisse separate .htaccess hinterlegen.

Definieren von Dateien, welche SSI beinhalten können:

benötigt Punkt vorher(endende Slashs)