htaccess Befehle
Die wichtigsten htaccess-Befehle im Überblick

Es wird die Datei .neuerfilename als .htaccess-Datei verwendet.
AccessFileName .neuerfilename
Sehr viele Webserver unterstützen passwortgeschützte Verzeichnisse mit .htaccess. Es werden hier zwei Dateien benötigt.
.htaccess - diese Datei regelt den Zugriff (access) auf das Verzeichnis und .htpasswd - in dieser Datei steht das eigentliche Passwort und der Benutzername. Das Passwort ist natürlich verschlüsselt. Zum verschlüsseln werden etliche Programme angeboten oder man nutzt komplette Dienste zur .htaccess- und .htpasswd-Erstellung wie hier.
AuthType Basic
AuthName "Passwortschutz"
require valid-user
AuthUserFile /.htpasswd
Inhalt der .htpasswd (x5forum:x5user):
x5forum:$1$mjSn9YSt$Nfb2wTdN2t.LNqhQ5fIR21
Wie im Oberen bereits erläutert, haben hier mehrere Benutzer Zugriff und somit auch ein eigenes Passwort.
AuthType Basic
AuthName "Passwortschutz"
require valid-user
AuthUserFile /.htpasswd
Inhalt der Datei .htpasswd:
Username1:$1$mjSn9YSt$Nfb2wTdN2t.LNqhQ5fIR21
Soll z.B. wegen Wartungsarbeiten die Seite kurzfristig für alle Besucher gespert werden, macht das dieser Code.
order allow,deny
allow from all
deny from
order deny,allow
allow from 123.456.78.007
deny from all
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
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
Dieser Code verhindert den Aufruf der .htaccess Datei. Anstelle von .htaccess kann selbstverständlich jede beliebige Datei, Seite oder sonstige File eingesetzt werden.
<Files .htaccess>
order allow,deny
deny from all
</Files>
Der nebenstehende Code sorgt dafür, dass keine Dateien, die mit einem Punkt beginnen (wie z.B. die .htaccess selbst) vom Server aus gedownloadet werden können.
<FilesMatch "^" >
deny from all
</FilesMatch>
RewriteEngine on
RewriteCond %HTTP_USER_AGENT ^Client1.*
RewriteRule ^/.* - [forbidden]
RewriteEngine on
RewriteCond %HTTP_USER_AGENT ^Client1.* [OR]
RewriteCond %HTTP_USER_AGENT ^Client2.*
RewriteRule ^/.* - [forbidden]
RewriteEngine on
RewriteCond %HTTP_USER_AGENT ^Client1.* [OR]
RewriteCond %HTTP_USER_AGENT ^Client2.* [OR]
RewriteCond %HTTP_USER_AGENT ^Client3.*
RewriteRule ^/.* - [forbidden]
Oftmals werden Grafiken von einer Webseite auf anderen Webseiten verlinkt. Zwar kann der Grafikklau nicht unterbunden werden, aber zumindest die Verlinkung kann verhindert werden um so den unnötigen Traffic der dadurch entsteht zu minimieren.
Das Kopieren der Grafiken auf den lokalen PC wird nicht verhindert.
RewriteEngine on
RewriteCond %HTTP_REFERER !^$
RewriteCond %HTTP_REFERER !^http://(www)?meineDoamin.de/.*$ [NC]
RewriteRule (jpg| jpeg|gif|png)$ - [F]
Man kann 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
Suchmaschinen (Crawler) kann man aussperren, indem man wie hier im Beispiel den BackWeb Crawler mit diesem Code fernhält.
RewriteEngine On
RewriteCond %HTTP_USER_AGENT ^BackWeb
Hier kann dem Browser expliziet angeben werden, welche Dateitypen zum Download angeboten werden sollen.
<FilesMatch "(doc|pdf|zip|rar)$" >
ForceType application/octet-stream
</FilesMatch>
Oftmals ist die index.html Datei als Startseite definiert. Mit diesem Code wird z.B. die index.php als Startseite bestimmt
DirectoryIndex index-xy.php
Hier versucht der Apache der Reihenfolge nach die index.html anzuzeigen, findet er diese nicht, dann mit der index.htm usw.
DirectoryIndex index.html index.htm index.php xyz.html xyz.php
Mit diesem Code können unterschiedliche Startseiten für mehere 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
RewriteRule ^$ index1.html
RewriteCond %HTTP_HOST ^(www)?domain2
RewriteRule ^$ index2.html
Um zu verhindern das z.B. Google die Website unter http://www.meineDomain.de und http://meineDomain.de erreicht bedarf es nur einer kleinen Eintragung. Durch diesen Befehl in der .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$ [NC]
RewriteRule ^(.*)$ http://www.meineDoamin.de/$1 [R=301,L]
Selbsttverständlich gibt es auch die Möglichkeit seine Website immer OHNE www. aufrufen zu lassen. Der Code hierfür sieht ähnlich dem oberem aus.
Options +FollowSymlinks
RewriteEngine on
RewriteCond %HTTP_HOST ^([^.]+)de$ [NC]
RewriteRule ^(.*)$ http://meineDoamin.de/$1 [R=301,L]
Es besteht die Möglichkeit 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 Schrägstrich (/-Slash) setzt.
Options +FollowSymlinks
RewriteEngine on
RewriteCond %REQUEST_URI ^/[^]+[^/]$
RewriteRule ^(.*)$ http://%HTTP_HOST/$1/ [R=301,L]
Mit dem Includes wird die Verwendung von Server Side Includes gestattet oder abgeschalten.
Options -ExecCGI --> CGI-Scripts werden untersagt
Options +ExecCGI --> CGI-Scripts werden möglich
Identisch dem oberen Code wird mit Includes die Verwendung von Server Side Includes erlaubt oder abgeschalten.
Options -Includes
--> Server Side Includes abgeschaltet.
Options +Includes
--> Server Side Includes eingeschaltet.
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
Dieser Code bewirkt, das Seiten wie z.B. http://www.meineDoamin.de/index.php?go=home umbenannt wird in: http://www.meineDoamin.de/home.html!
RewriteEngine on
RewriteRule ^(.*).html$ index.php?go=$1 [L]
Mit diesem 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]
Ändert man die Verzeichnisstruktur, kann man Fehlerseiten vermeiden indem der Besucher auf die Startseite (root) weiterleitet.
RewriteRule ^ordner/ordner oder seite/?$ / [R=301,L]
Dieser Befehl leitet jeden URL-Aufruf auf eine andere Domain um.
Redirect 301 / http://www.deine-neue-seite.de/
Hier wird mit einem sogenannten permanent Redirect (301 Redirect) werden umbenannte oder umgezogene Webseiten umgeleitet.
Redirect permanent /seite.html http://www.neue-domain.de/seite.html
Von /verzeichnis/alt.html wird auf http://www.domain.com/neu.html weitergeleitet und ein Status-Code 301 an den Spider ausgeliefert.
Redirect 301 /verzeichnis/alt.html http://www.seite.dem/neu.html
Hier wird beim Aufruf der Seite seo.html direkt zur Seite suchmaschinenoptimierung.html weitergeleitet.
Redirect /seo.shtml suchmaschinenoptimierung.shtml
Damit anstelle von der Standard Servermeldung eine individuelle angepasste Webseiten 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 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."
Damit auf HTML-Seiten PHP-Befehle ausgeführt werden, muss via der htaccess Datei dieses mittgeteilt werden.
Mit diesem Code wird dem Webserver gesagt, dass alle Dateien mit der Endung .htm oder .html zuerst vom PHP-Programm abgearbeitet werden sollen, 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
Wenn in der php.ini der Display_Errors auf off gesetzt ist und kein Zugriff auf diese Datei besteht, wird ein parse-errors ausgeben.
php_flag display_errors true
Damit sollte der Browser den Inhalt korrekt als UTF-8 darstellen.
AddDefaultCharset UTF-8
Damit sollte der Browser den Inhalt korrekt als ISO-8859-1 darstellen.
AddDefaultCharset ISO-8859-1
Damit werden Dateien mit der Endung .html als UTF-8 dargestellt.
AddCharset UTF-8 .html
Damit werden Dateien mit Typ Text und .html als UTF-8 dargestellt.
AddType 'text/html; charset=UTF-8' html
Damit sollte der Browser den Inhalt der Dateien mit den Endungen .htm, .html, .css und .js korrekt als UTF-8 darstellen.
<filesMatch ".(htm|html|css|js)$">
AddDefaultCharset UTF-8
</filesMatch>
Damit sollte der Browser den Inhalt der Dateien mit dem Typ Text und mit den Endungen .htm, .html, .css und .js korrekt als UTF-8 darstellen.
<filesMatch ".(htm|html|css|js)$">
ForceType 'text/html; charset=UTF-8'
</filesMatch>