WEBHOSTING SUPPORTNETZWERK
     
 

Umgang mit .htaccess

1. Was ist .htaccess?

Die .htaccess-Datei dient zur Konfiguration des Apache Webservers. Durch sie können eine Reihe von Serverfunktionen verändert werden. Die vorgegebenen Einstellungen gelten für das Verzeichnis, in dem sich die .htaccess-Datei befindet, sowie dessen Unterdateien. Der Dateiname muss unbedingt mit einem Punkt beginnen und kann sehr einfach im Dateimanager des Kontrollpanels erstellt werden. Sie können ein FTP-Programm benutzen, um die Konfigurationsdatei auf Ihren Rechner herunterzuladen, und sie anschließend mit einem Text-Editor zu bearbeiten. Bitte bedenken Sie, dass die meisten FTP-Programme, Dateien, die mit einem Punkt beginnen, normalerweise nicht anzeigen. Um die .htaccess-Dateien zu sehen, müssen Sie die Funktion “Versteckte Dateien anzeigen“ in den Einstellungen Ihres FTP-Programms aktivieren.

2. Nützliche Beispiele

2.1 Zugangsverbot für bestimmte Dateien
2.2 Content-Type-Header zu Ihren Webseiten hinzufügen
2.3 Bestimmte Zeitzone benutzen
2.4 Erzwungener Datei-Download
2.5 Zugangsverbot zu dem Inhalt Ihrer Ordner
2.6 Eigene Fehler-Seiten erstellen
2.7 Vermeidung von Hotlinking
2.8 Zugangsverweigerung für eine bestimmte IP-Adresse oder ein Netzwerk
2.9 Meldung über laufende Wartungsarbeiten
2.10 Seitenzugang nach Uhrzeit blockieren
2.11 Obligatorische Verwendung von www.ihre_domain.de


2.1 Zugangsverbot für bestimmte Dateien ^

Mit dem folgenden Code können Sie den Zugang zu Dateien mit bestimmten Endungen verbieten – in diesem Beispiel handelt es sich um alle Dateien mit der .txt-Endung. Die Webbesucher werden anstelle der .txt-Datei, die Fehlermeldung "403 Forbidden" sehen.
<Files ~ "\.txt$">
Order Allow,Deny
Deny from All
</Files>


Wenn Sie z. B. den Zugang zu allen .txt-, .doc-, .rtf-, .log-, .fla- und .psd-Dateien verbieten möchten, benutzen Sie den folgenden Code:
<FilesMatch "\.(txt|doc|rtf|log|fla|psd)$">
Order Allow,Deny
Deny from all
</FilesMatch>


2.2 Content-Type-Header zu Ihren Seiten hinzufügen ^

Um einen Content-Type-Header zu erstellen, damit der Server den Browser über die Kodierung jeder Ihrer Seiten informiert, verwenden Sie bitte den Befehl AddDefaultCharset. Hier zwei Beispiele:
AddDefaultCharset UTF-8
AddDefaultCharset ISO-8859-1


2.3 Bestimmte Zeitzone benutzen ^

Durch die folgende Zeile können Sie die PHP-Skripts zwingen, Ihre aktuelle Zeitzone anstatt der des Servers zu verwenden:
SetEnv TZ Europe/London
Eine vollständige Liste der unterstützten Zeitzonen finden Sie hier: http://php.net/manual/bg/timezones.php


2.4 Erzwungener Datei-Download ^

Dieses Beispiel setzt die Bedingung, dass alle Dateien mit den aufgezählten Endungen nicht im Browser oder mit zusätzlichen Programmen wie etwa QuickTime, Adobe Reader u.ä. geöffnet werden sollen, sondern stattdessen ein Fenster mit der Anfrage geöffnet werden soll, wo diese gespeichert werden sollen:
<FilesMatch "\.(mov|mp3|jpg|pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>


2.5 Zugangsverbot zu dem Inhalt Ihrer Ordner ^

Sie können eine .htaccess-Datei mit der unten stehenden Zeile erstellen, wenn Sie z. B. keine index-Seite haben und verbieten möchten, dass alle Dateien in dem Ordner gezeigt werden. So wird niemand außer Sie den Inhalt des entsprechenden Ordners sehen.
Options -Indexes
Sie können den gleichen Effekt erzielen, indem sie eine leere index.html-Datei im besagten Ordner erstellen.

Wenn Sie möchten, dass nur bestimmte Dateitypen für Ihre Webbesucher sichtbar und alle anderen versteckt sein sollen, können Sie den folgenden Code benutzen:
IndexIgnore *.php *.html
Dadurch werden alle PHP- und HTML-Dateien nicht zusammen mit den anderen Dateien aufgelistet.


2.6 Eigene Fehler-Seiten erstellen ^

Wenn Ihnen die Standard-Fehlerseiten nicht gefallen, können Sie mittels .htaccess eigene Fehlerseiten zusammenstellen. Im nachstehenden Beispiel befinden sich die vordefinierten Seiten im Ordner "Fehlermeldungen", in Ihrem www Hauptverzeichnis.
ErrorDocument 403 /Fehlermeldungen/403.html
ErrorDocument 404 /Fehlermeldungen/404.html

Das Grundmuster jeder Zeile sieht so aus: ErrorDocument < HTTP-Statuscode> <Dateipfad>

Der Link zu Ihrer Fehlermeldungsdatei kann sich auch auf einer anderen Seite befinden:
ErrorDocument 404 http://andere_domain.com/404.php
Anstelle eines Links oder einer Datei können Sie auch über der .htaccess-Datei einen Text anzeigen lassen:
ErrorDocument 404 "Diese Seite konnte nicht auf dem Server gefunden werden.
oder HTML:
ErrorDocument 404 "<html><title>Nicht gefunden</title><body>Diese Seite konnte nicht auf dem Server gefunden werden.</body></html>Bemerkung: Achten Sie auf die Anführungszeichen, die lediglich am Anfang der Meldung (und nicht am Ende) stehen müssen.

Wichtig: Wenn Sie die Fehlerseite 404 selber erstellen möchten, müssen Sie die missing.html-Datei aus dem www Hauptverzeichnis löschen.
Der Internet Explorer ladet keine Fehlerseiten, die kleiner als 512 Byte sind, weshalb Ihre Fehlermeldung diese Größe überschreiten sollte.


2.7 Vermeindung von Hotlinking ^

Hotlinking ist die direkte Verwendung von Dateien (am häufigsten Bilder), welche sich auf Ihrer  Webseite befinden, seitens einer anderen Seite. Diese Dateien werden meistens ohne Ihre Genehmigung Teil des Inhaltes der fremden Webseite. Das verursacht zusätzlichen Traffic für die andere Seite, welchen Sie mittragen müssen, oder anders gesagt, handelt es sich hierbei um Traffic-Raub.

Nur bestimmte Domains blockieren

Um Hotlinking von Bildern von bestimmten Webseiten zu verbieten (im Beispiel von nicht_ihre_domain.net, www.nicht_ihre_domain.net, nicht_ihre_domain.com und www.nicht_ihre_domain.com), wobei alle anderen Seiten von Hotlinking Gebrauch machen können, benutzen Sie den folgenden Code, welcher anstatt der Bilder eine "403 Forbidden" Fehlermeldung anzeigen wird:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www\.)?nicht_ihre_domain\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?nicht_ihre_domain\.com/ [NC]
RewriteRule \.(jpeg|JPEG|jpe|JPE|jpg|JPG|gif|GIF|png|PNG|tif|TIF|tiff|TIFF)$ - [F]


Alle Domains außer vorgegebenen blockieren

Im nächsten Beispiel wird Hotlinking von allen Seiten, mit Ausnahme Ihrer eigenen Domain, unter welcher sich das Bild befindet, unterbunden:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_domain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpeg|JPEG|jpe|JPE|jpg|JPG|gif|GIF|png|PNG|tif|TIF|tiff|TIFF)$ - [F]

Falls Sie hinzugefügte Zusatzdomains haben, bedenken Sie bitte, dass Sie jede von ihnen zu diesem Code hinzufügen, damit diese Regel auch für sie geltend wird. Beispiel für eine Hauptdomain und drei Zusatzdomains:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_domain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_zusatzdomain1\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_zusatzdomain2\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_zusatzdomain3\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpeg|JPEG|jpe|JPE|jpg|JPG|gif|GIF|png|PNG|tif|TIF|tiff|TIFF)$ - [F]


Bilder ersetzen

Diese Methode erlaubt immer noch den Traffic-Raub, jedoch können Sie dadurch  Ihre Bilder schützen. Bitte bedenken Sie, dass einige Programme (z. B. PhpBB) dabei anscheinend den Status 302 als Fehler interpretieren, und fangen mehrfach die Seite neu zu laden an, bis der Benutzer eine andere Seite ladet.

Mit diesem Code wird der fremde Server die Abbildung unknown.jpg aus dem Ordner der www Hauptzusatzdomain anstelle der angeforderten Abbildung laden:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_domain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?ihre_zusatzdomain1\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpeg|JPEG|jpe|JPE|jpg|JPG|gif|GIF|png|PNG|tif|TIF|tiff|TIFF)$ images/unknown.jpg [L]

2.8 Zugangsverweigerung für eine bestimmte IP-Adresse oder ein Netzwerk ^

Zugangsverweigerung für bestimmte IP-Adresse

Wenn Sie den HTTP-Zugang von einer bestimmten Ip-Adresse verbieten möchten (in dem Beispiel 64.14.68.138 und 64.14.68.139), erstellen Sie eine .htaccess-Datei mit dem folgenden Inhalt:
order allow,deny
deny from  64.14.68.138
deny from 64.14.68.139
allow from all

• Zugangsverweigerung für bestimmte IP-Adresse für ein bestimmtes Netzwerk

Sie können den Zugang auch für ein gesamtes Netzwerk blockieren. Um z. B. alle IP-Adressen zu blockieren, die mit 64.14.68. beginnen (also das Netzwerk 64.14.68), benutzen Sie den folgenden Code:
order allow,deny
deny from 64.14.68.
allow from all

• Zugangsverweigerung für alle IP-Adressen und Netzwerke

Um alle IP-Adressen und Netzwerke zu blockieren, fügen Sie die folgende Zeile in Ihre .htaccess-Datei ein:
deny from all
Außer IP-Adressen können in der .htaccess-Datei auch Domainnamen benutzt werden:
deny from beispiel.de
Um den Zugang von allen Unterdomains von beispiel.de zu blockieren, benutzen Sie bitte:
deny from beispiel.de

2.9 Meldung über laufende Wartungsarbeiten ^

Falls Sie Ihre Seite bearbeiten und Ihre Webbesucher wissen lassen möchten, dass gerade Wartungsarbeiten durchgeführt werden, anstatt den Zugang zu Ihrer Seite zu sperren, müssen Sie eine Datei namens wartung.html im www Hauptverzeichnis erstellen. Solange Ihre Seite nicht verfügbar ist, werden die Webbesucher den Inhalt dieser Datei sehen. Danach müssen Sie folgende Zeilen in der .htaccess-Datei, welche sich im www Hauptverzeichnis befindet, hinzufügen:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/wartung.html$
RewriteRule .* /wartung.html [R=307,L]

2.10 Seitenzugang nach Uhrzeit blockieren ^

Wenn Sie z. B. möchten, dass Ihre Webseite nur innerhalb Ihrer Arbeitszeit (7:00 - 19:00 Uhr) erreichbar sein soll, können Sie den folgenden Code benutzen:
RewriteEngine On
RewriteCond %{TIME_HOUR}%{TIME_MIN} >1900 [OR]
RewriteCond %{TIME_HOUR}%{TIME_MIN} <0700
RewriteRule ^.*$ - [F,L]

Wenn Sie den Zugang zur Seite innerhalb der Mittagspause (im Beispiel 12:00 bis 12:59 Uhr) blockieren möchten, können Sie den folgenden Code benutzen:
RewriteEngine On
RewriteCond %{TIME_HOUR} ^12$
RewriteRule ^.*$ - [F,L]


2.11 Obligatorische Verwendung von www.your_domain.com ^

Wenn Sie möchten, dass immer wenn Ihre Webbesucher ihre_domain.de oder eine ihrer Zusatzdomains eingeben, zu www.ihre_domain.de weitergeleitet werden, können Sie den folgenden Code benutzen:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteCond %{HTTP_HOST} !^www\.ihre_domain\.de$ [NC]
RewriteRule ^(.*)$ http://www.ihre_domain.de/$1 [R=301,L]