htaccess Befehle auf einen Blick

pfeil Aufruf einer Seite, Datei, ect. verhindern
pfeil Alle Besucher sperren
pfeil User sperren
pfeil Bilder und Grafiken schützen
pfeil Bestimmte Seite als Startseite definieren 1
pfeil Bestimmte Seite als Startseite definieren 2
pfeil Crawler ausschließen
pfeil C-NAMES Startseiten
pfeil Clients bzw. User aussperren
pfeil Dateitypen zum Download freigeben
pfeil Dateien sperren
pfeil Standarddomain definieren (Duplicate Content vermeiden 1)
pfeil abschließenden Schrägstrich (/-Slash) hinzufügen (Duplicate Content vermeiden 2)
pfeil ExecCGI ON/OFF
pfeil Fehlerbehandlung
pfeil htaccess umbenennen
pfeil .htaccess und .htpasswd vom Server löschen
pfeil IP-Adressen und Websiten Sperren
pfeil PHP-Befehle in .html-Seiten
pfeil parse-errors ausgeben
pfeil Server Side Includes ON bzw. OFF
pfeil URL Rewriting
pfeil Auf https:// Umleiten
pfeil Verzeichnisauflistung an bzw. aus
pfeil Weiterleitungen zur Startseite
pfeil Weiterleitungen Unterverzeichnis auf Hauptseite
pfeil Weiterleitungen (301 Redirect) 1
pfeil Weiterleitungen (301 Redirect) 2
pfeil Weiterleitungen Einzeldateien
pfeil Ganze Domain weiterleiten (Domainumzug)

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 sonstoges 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 gespert 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 ansich 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 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\.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 Befehl 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 expliziet angeben werden, welche Dateitypen zum Download angeboten werden soll. 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 gedownloaden 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]

Selpftverständlich man 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 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 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

Wie allgemeinen heisst die htaccess-Datei normalerweise .htaccess. Diese kann aber auch nach belieben umbenannt 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 besitzten zb. WS-FTP, Windows-Commander,Total commander, filezilla.

Am einfachsten und ohne großen Aufwand ist es, eine leere .htassecc oder .htpasswd Datei zu erstellen (eine leere .txt Datei erstellen und in .htassess oder .htpasswd umbennenen) und auf den Server zu laden. Die vorhandene wird somit überschrieben. Sie könen auch die leere .txt Datei auf den Server laden und diese dort umbennenen.

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.
Mi 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 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 zb. http://www.meineDoamin.de/index.php?go=home wie folgt umbenannt werden: http://www.meineDoamin.de/home.html ! Wenn bei Ihnen etwas anderes steht als index.php?go=home, müssen Sie dies natürlich im Code ändern.

RewriteEngine on
RewriteRule ^(.*).html$ index.php?go=$1 [L]

Auf https:// Umleiten

Mit den unten stehenden 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

Sie können 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 permanent Redirect (301 Redirect) weitergeleitet werden.

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/

alltagz del.icio.us Digg.com Diigo Facebook Favoriten.de folkd.com Furl icio.de Linkarena Linksilo.de Oneview Reddit SeekXL Simpy SumaXL Technorati Mister Wong Yigg

Kommentare (4)

...
Vielen Dank für die tolle Übersicht. Habe in den letzten Tagen auch unsere htacecess optimiert und diese leicht verständliche Übersicht hat mir echt Stunden an Arbeit erspart. Und trotzdem läuft jetzt alles. Viele Grüsse und nochmals vielen Dank. Mathias
mathias , 27 November 2011
...
Hi,
nun ich bin ein totaler Anfänger, was Programmieren betrifft.
Ich habe Probleme bei einigen html Seiten, an denen ich arbeite/lerne, eine Navigation per php include einzubinden.
leider nimmt der Server die Option nicht an. Was kann ich machen, damit die php include auf der html Seite funktioniert, die oben genannten addhandlers und addtypes habe ich schon ausprobiert.

Kann auch nur Danke zu den experten sagen, die Ihre Expertiese mit uns teilen.smilies/grin.gif
Stavros , 16 Juli 2012
...
Nimm doch einfach get_content satt include:



Die Adresse musst Du natürlich auf Deine abändern.
Ob der Pfad dabei absolut oder relativ angegeben wird, ist egal...
hirni , 06 November 2012
...
hallo,
habe eine "htaccess-frage".


ich möchte, dass die startseite immer OHNE /index.htm angezeigt wird. habe hier nichts gefunden. kann mir jemand den htaccess-befehl nennen ? und kann ich den befehl dann mit in eine bestehende htaccess-datei reinschreiben ?
ich habe bereits eine (www.-erzwingung).
danke im voraus !

gruss, hermann
hermann , 27 Dezember 2012

Kommentar schreiben

kleiner | größer
security image
Trage bitte den oberen Code hier ein:

busy