Webseitenbetreiber kennen die kleine aber mächtige Datei .htaccess zur Genüge. Mit dieser Datei können auf NCSA-kompatiblen Webservern, wie dem Apache HTTP Server, Regeln festgelegt werden, die auf das jeweilige Verzeichnis bzw. ggf. die Unterverzeichnisse beschränkt sind. Somit können unter anderem Nutzerrechte festgelegt werden. Ebenso kann sichergestellt werden, dass nur die https-Version einer Webseite ausgeliefert wird.
Dieser Artikel wendet sich an Webmaster, die Wissen, was sie mit einer .htaccess anfangen können. Hier werden diverse Einsätze kurz beschrieben und der passende Quellcode aufgezeigt. Die Liste ist sicher nicht vollständig aber schon ziemlich weitreichend.
Zur besseren Übersicht befindet sich in der Sidebar ein Inhaltsverzeichnis.
Aufruf einer Seite, Datei, ect. verhindern
Folgender Code verhindert den Aufruf der .htaccess Datei. An Stelle von .htaccess kann selbstverständlich jede beliebige Datei, Seite oder sonstiges File eingesetzt werden.
<Files .htaccess> order allow,deny deny from all </Files>
Alle Besucher sperren
Soll z.B. wegen Wartungsarbeiten die Seite kurzfristig für alle Besucher gesperrt werden, so hilft folgender Code:
order allow,deny allow from all deny from
User sperren
Mit dem folgenden Code bewirkst du, dass nur User mit einer bestimmten IP-Adresse Zugriff auf den Server haben. Alle anderen werden geblockt.
order deny,allow allow from 123.456.78.007 deny from all
Bilder und Grafiken schützen
Oftmals werden Grafiken von einer Webseite auf anderen Webseiten verlinkt. Zwar kann der Grafikklau an sich nicht unterbunden werden, aber zumindest die Verlinkung kann verhindert werden um so den unnötigen Traffic der dadurch entsteht zu minimieren.
Dies verhindert aber nicht das Kopieren der Grafiken auf den lokalen PC.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?meineDoamin.de/.*$ [NC] RewriteRule \.(jpg| jpeg|gif|png)$ - [F]
Bestimmte Seite als Startseite definieren 1
Oftmals wird providerseitig die index.html Datei als Startseite definiert. Will jemand nun z.B. die index-xy.php als Startseite bestimmen, so geht das mit folgenden Code:
DirectoryIndex index-xy.php
Bestimmte Seite als Startseite definieren 2
In diesem Beispiel, versucht der Apache der angegebenen Reihenfolge nach die index.html anzuzeigen, wenn er diese nicht findet, versucht er es mit der index.htm usw.
DirectoryIndex index.html index.htm index.php xyz.html xyz.php
Crawler ausschließen
Mit der htaccess ist es auch möglich Suchmaschinen Crawler auszusperren, indem wie in diesem Beispiel der BackWeb Crawler mit folgenden Codebeispiel ferngehalten wird.
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BackWeb
C-NAMES Startseiten
Mit diesem Code können unterschiedliche Startseiten für mehrere Domains (sog. C-NAMES) angesprochen werden. Beispiel:
domain1.de --> domain.de/index1.html domain2.de --> domain.de/index2.html
Alle Domains zeigen dabei auf das gleiche Verzeichnis.
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.de RewriteRule ^$ index1.html RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.de RewriteRule ^$ index2.html
Clients bzw. User aussperren
Clients (Bots, Websauger, Grabber, usw.) können mittels diesem Befehls ausgesperrt werden. Sollen mehr als zwei Clients ausgesperrt werden, so muss die logische Oder Anweisung [OR] wiederholt werden.
Einzelnen Client aussperren:
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^Client1.* RewriteRule ^/.* - [forbidden]
Zwei Clients aussperren:
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^Client1.* [OR] RewriteCond %{HTTP_USER_AGENT} ^Client2.* RewriteRule ^/.* - [forbidden]
drei Clients aussperren:
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^Client1.* [OR] RewriteCond %{HTTP_USER_AGENT} ^Client2.* [OR] RewriteCond %{HTTP_USER_AGENT} ^Client3.* RewriteRule ^/.* - [forbidden]
Dateitypen zum Download freigeben
Mit diesen Zeilen kann dem Browser explizit angeben werden, welche Dateitypen zum Download angeboten werden sollen. In diesem Beispiel werden Dateien mit den Endungen .doc, .pdf, .zip und .rar zum Download freigegeben.
<FilesMatch "\.(doc|pdf|zip|rar)$" > ForceType application/octet-stream </FilesMatch>
Dateien sperren
Der nachfolgende Code sorgt dafür, dass keine Dateien, die mit einem Punkt beginnen (wie z.B. die .htaccess selbst) vom Server aus heruntergeladen werden können.
<FilesMatch "^\." > deny from all </FilesMatch>
Standarddomain definieren (Duplicate Content vermeiden 1)
Um zu verhindern das z.B. Google deine Website unter http://www.meineDomain.de und http://meineDomain.de erreicht bedarf es nur einer kleinen Eintragung. Durch folgenden Befehl in die .htaccess im Stammverzeichnis erzwingt man den Server per mod_rewrite alle Browser und Bots auf “www.*” umzuleiten
Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.meineDomain\.tld$ [NC] RewriteRule ^(.*)$ http://www.meineDoamin.de/$1 [R=301,L]
Selbstverständlich besteht auch die Möglichkeit seine Website immer OHNE www. aufrufen zu lassen. Der Code hierfür sieht wie folgt aus:
Options +FollowSymlinks RewriteEngine on RewriteCond %{HTTP_HOST} ^([^.]+)\.meineDoamin.de$ [NC] RewriteRule ^(.*)$ http://meineDoamin.de/$1 [R=301,L]
abschließenden Schrägstrich (/-Slash) hinzufügen (Duplicate Content vermeiden 2)
Bei Content-Management-Systemen (CMS) oder auch Blog-Systemen welche folgendes URL-Schema aufweisen „http://www.cms.de/content/seite/“, besteht die Möglichkeit diese URLs mit oder ohne Trailing Slash am Ende der URL aufzurufen. Aus eigentlich einer Seite werden nun zwei = Doppelter Content! Dies lässt sich vermeiden indem an jede URL immer ein abschließender Slash gesetzt wird. Dies funktioniert mit folgender Anweisung:
Options +FollowSymlinks RewriteEngine on RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
ExecCGI ON/OFF
Mit dem Includes wird die Verwendung von Server Side Includes gestattet oder abgeschaltet.
Options -ExecCGI --> CGI-Scripts werden untersagt Options +ExecCGI --> CGI-Scripts werden möglich
Fehlerbehandlung (404 Fehlerseite)
Damit anstelle von der Standard Servermeldung eine individuell angepasste Webseite ausgegeben wird, sobald eine falsche URL eingegeben wird, muss folgender Code in der .htaccess Datei stehen:
- oben = Weiterleitung zur Fehlerseite auf einer anderen Domain.
- mitte = Weiterleitung zur Fehlerseite auf der eigenen Domain.
- unten = Ausgabe des hier eingegebenen Textes als Fehlermeldung.
ErrorDocument 403 http://www.domain.de/403.html ErrorDocument 404 http://www.domain.de/404.html
oder:
ErrorDocument 403 /fehler/403.html ErrorDocument 404 /fehler/404.html
oder:
ErrorDocument 403 "Der Zugriff wurde verweigert." ErrorDocument 404 "Die Seite bzw. Datei wurde entfernt oder wird zur Zeit Überarbeitet."
.htaccess umbenennen
Im Allgemeinen heißt die htaccess-Datei normalerweise .htaccess. Diese kann aber auch nach Belieben geändert werden.
Bei diesem Beispiel wird in allen Unterverzeichnissen die Datei. neuername als htaccess-Datei verwendet.
AccessFileName .neuername
.htaccess und .htpasswd vom Server löschen
Du willst deine .htaccess oder .htpasswd löschen, kannst sie aber nicht sehen? Wenn das verwendete FTP-Programm eine Kommandozeile besitzt, gibt man dort ‚delete .htaccess‘ oder ‚delete .htpasswd‘ ein, und schon wird die jeweilige Datei gelöscht. Eine solche Kommandozeile besitzen z.B. WS-FTP, Windows-Commander, Total commander, FileZilla.
Am einfachsten und ohne großen Aufwand ist es, eine leere .htaccess oder .htpasswd Datei zu erstellen (eine leere .txt Datei erstellen und in .htaccess oder .htpasswd umbenennen) und auf den Server zu laden. Die vorhandene wird somit überschrieben. Du kannst auch die leere .txt-Datei auf den Server laden und diese dort umbenennen.
IP-Adressen sperren
Weitere Funktionen, die häufig zum Einsatz kommen, sind IP-Sperren. Bestimmte IP-Adressen haben mit diesem Code keinen Zugriff:
order allow,deny allow from all deny from 27.101.84.2001
IP-Adressen und Websiten Sperren
Hier wird der Zugriff für alle Host aus der Domain meineDomain.de gesperrt. Der Host traffic.website.com darf ebenfalls nicht zugreifen. Alle Zugriffe eines Rechners, dessen IP mit 192.168 beginnt, werden hier auch gesperrt. Alle anderen dürfen uneingeschränkt auf die Seiten zugreifen.
order allow,deny deny from .meineDomain.de deny from traffic.website.com deny from 192.168 allow from all
PHP-Befehle in .html-Seiten
Damit auf HTML-Seiten PHP-Befehle ausgeführten werden, muss via der .htaccess Datei dies mittgeteilt werden.
Mit den folgenden Zeilen wird dem Webserver gesagt, dass alle Dateien mit der Endung .htm oder .html zuerst vom PHP-Programm abgearbeitet werden, bevor diese an den Browser weitergeschickt werden.
AddType application/x-httpd-php .html AddType application/x-httpd-php .htm
oder:
AddType application/x-httpd-php .html .htm
oder für neueren Versionen von PHP bzw. Apache:
AddHandler application/x-httpd-php .html .htm
parse-errors ausgeben
Wenn in der php.ini der Wert Display_Errors auf off gesetzt ist und keine Zugriffsrechte auf diese Datei besteht, kann mit folgendem Code ein parse-errors (Fehlermeldungen) ausgeben werden.
php_flag display_errors true
Server Side Includes ON bzw. OFF
Mit Includes wird die Verwendung von Server Side Includes erlaubt oder abgeschaltet.
Options -Includes --> Server Side Includes abgeschaltet. Options +Includes --> Server Side Includes eingeschaltet.
URL Rewriting
Dieser Code bewirkt, das Seiten wie z.B.. http://www.meineDoamin.de/index.php?go=home wie folgt umbenannt werden: http://www.meineDoamin.de/home.html ! Wenn bei dir etwas anderes steht als index.php?go=home, musst du dies natürlich im Code ändern.
RewriteEngine on RewriteRule ^(.*).html$ index.php?go=$1 [L]
Auf https:// Umleiten
Mit den untenstehenden Code kann eine Website die mit http:// aufgerufen wird automatisch auf https:// umgeleitet werden.
RewriteEngine On RewriteCond %{SERVER_PORT} !=443 RewriteRule ^(.*)$ https://www.domainname.de/$1 [R=301,L]
Verzeichnisauflistung an bzw. aus
Du kannst festlegen, ob der Apache einen Fehler zurückgeben soll, wenn sich keine Startseite in einem Verzeichnis befindet, oder ob er den Inhalt des Verzeichnisses ausgeben soll.
Inhalt ausgeben:
Options +Indexes oder Fehler Ausgeben: Options -Indexes
Weiterleitungen zur Startseite
Ruft jemand die URL http://www.webseite.de/beispielverzeichnis auf landet er ohne weiteren Zwischenstopp direkt auf der Startseite.
Redirect /beispielverzeichnis http://www.webseite.de
Weiterleitungen Unterverzeichnis auf Hauptseite
Es kommt vor das man die Verzeichnisstruktur ändert und Ordner löscht. Um Fehlerseiten zu vermeiden kann man beim Aufruf des Ordners den Besucher auf die Startseite (root) weiterleiten:
RewriteRule ^ordner/ordner oder seite/?$ / [R=301,L]
Weiterleitungen (301 Redirect) 1
Wenn Webseiten umbenannt werden oder eine Website auf eine andere Domain umzieht, sollte von den alten Dateien aus, auf die Neuen mit einem sogenannten permanenten Redirect (301 Redirect) weiterleiten.
Redirect permanent /seite.html http://www.neue-domain.de/seite.html
Weiterleitungen (301 Redirect) 2
Von /verzeichnis/alt.html wird auf http://www.domain.com/neu.html weitergeleitet und ein Status-Code 301 an den Spider der Suchmaschinen ausgeliefert.
Redirect 301 /verzeichnis/alt.html http://www.seite.dem/neu.html
Weiterleitungen Einzeldateien
Hier wird beim Aufruf der Seite seo.html direkt zur Seite suchmaschinenoptimierung.html weitergeleitet
Redirect /seo.shtml suchmaschinenoptimierung.shtml
Ganze Domain weiterleiten (Domainumzug)
Dieser Befehl leitet jeden URL-Aufruf einer Domain auf eine andere Domain um. Damit auch wirklich jede URL umgeleitet wird, muss sich die .htaccess-Datei im obersten Ordner (Root-Verzeichnis) befinden.
Redirect 301 / http://www.deine-neue-seite.de/