Sie sind hier : sebastian1012.bplaced.net/ homepage-neu / ineresantes / htaccess.php

Die .htaccess Datei erstellen – Mit Beispielen

Mit der .htaccess Datei hast du zahlreiche Möglichkeiten, mit der du deine Seiten aufwerten und schützen kannst. Diese möchte ich Dir im folgenden näher bringen.

>Ein kleiner Hinweis am Rande: Den Zugriff über den Browser auf Dateien die mit .ht beginnen blockiert der Apache-Server in der Regel automatisch, sodass niemand deine .htaccess Datei ansehen kann. Sie funktioniert zudem serverintern, sodass der Benutzer sie nicht manipulieren kann.

Wichtig zu wissen ist außerdem noch, dass du für jeden Befehl eine neue Zeile verwenden musst und, dass mod_rewrite für manche Methoden aktiviert sein muss.

.htaccess Methoden

Mit Hilfe der .htaccess können verschiedene Methoden/Funktionen angewandt werden. Dies sind die wichtigsten:

Im Folgenden möchte ich euch nun noch einige Beispiele zur Verwendung der .htaccess nennen.

1. Beispiel: Virtuelle Ordner / Ordner simulieren

Es wird dir vielleicht aufgefallen sein, dass der Pfad zu dieser Seite http://www-coding.de/die-htaccess-datei-erstellen/ lautet. Also müssten wir theoretisch für jeden neuen Artikel einen neuen Ordner erstellen, das tun wir aber nicht:

RewriteCond %{REQUEST_URI} !^(.*)/img/(.*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !^(.*).(gif|png|jpe?g|bmp|php|htm|html|js|css|txt|csv|pdf|xml)$ [NC]
RewriteRule ^(.*)$ /index.php?e=$1

Wir sagen zunächst, dass Dateien aus dem Bilder-Ordner (img) und Dateien allgemein wie 123.html von der Regel ausgeschlossen werden und leiten dann alle Zugriffe von http://www-coding.de/[xy] auf index.php?parameter=[xy] weiter.

Die RewriteEngine muss zuvor aktiviert worden sein, dies gilt auch für alle anderen Beispiele! Ein ausführliches Tutorial zu dem interessanten Thema findest du in hier.

2. Beispiel: „/“ erzwingen

Wer kennt es nicht? Mal werden (virtuelle) Ordner per ordner und mal per ordner/ aufgerufen.

Um für ein einheitliches Schema zu sorgen und doppelten Content zu vermeiden, erzwingen wir per .htaccess ein „/“ nach einem Ordnernamen:

RewriteCond %{REQUEST_URI} ^/[^.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

3. Beispiel: www erzwingen oder unterbinden

Wenn die Webseite mit und ohne www erreichbar ist, sorgt das für doppelten Content, was den Suchmaschinenrankings schaden kann. Deshalb kann man das www unterbinden:

RewriteCond %{HTTP_HOST} ^www.www-coding.de [NC]
RewriteRule (.*) http://www-coding.de/$1 [R=301,L]

Die URL solltest du für deine Zwecke anpassen.

Oder man kann es erzwingen:

RewriteCond %{HTTP_HOST} ^www-coding.de [NC]
RewriteRule (.*) http://www.www-coding.de/$1 [R=301,L]

4. Beispiel: Passwortschutz

Da dieses Beispiel relativ komplex zu behandeln ist, verweise ich hier ruhigen Gewissens auf SELFHTML, wo man eine ausführliche Anleitung zu diesem Thema findet.

5. Beispiel: Computer ausschließen

Es gibt immer Mal Besucher oder Bots, die man nicht so gerne auf den eigenen Seiten haben möchte, dafür gibt es die Möglichkeit gezielt IP-Adressen auszuschließen:

deny from IP.Adresse

Gibt es nicht dynamische IP-Adressen?, fragt ihr euch jetzt vielleicht. Ja, die gibt es, deswegen macht so etwas auch nur bedingt Sinn.

Es gibt allerdings auch die Möglichkeit nur manchen IP-Adressen Zugriff zu gewähren:

order deny,allow
allow from IP.Adresse1
allow from IP.Adresse2
deny from all

Hier können beliebig viele IP-Adressen angegeben werden. Das order deny,allow legt wie das order schon andeutet die Rangfolge fest. In diesem Fall heißt das: Grundsätzlich verbieten (deny from all), aber es gibt Ausnahmen.

6. Beispiel: Bilder schützen

Wenn andere deine Bilder direkt von deiner Webseite einbinden, zieht das Traffic, (meistens) ohne dass du davon profitierst. Mit der .htaccess kannst du dies verhindern:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www-coding.de/.*$ [NC]
RewriteRule .(png|jpe?g|gif)$ - [F]

Diese Regel sorgt dafür, sofern die RewriteEngine aktiviert ist, dass wenn der Referer (Seite, von der der Besucher bei dieser Anfrage kommt) weder leer (1. RewriteCond) noch unsere eigene Website ist, die Dateitypen PNG, JPG/JPEG und GIF für den Aufruf verboten ([F] = forbidden) werden.

Schön ist es dann auch noch dem Besucher ein anderes Bild unterzuschieben. Denke auch hier daran, die URL durch deine eigene zu ersetzen.

7. Beispiel: Eigene Fehlerseiten

Sehr populär ist die folgende Methode: Mit der .htaccess Datei eigene Fehlerseiten definieren. Die Standard-Fehlerseiten sehen nicht gerade schön aus und geben eventuell wertvolle Informationen über die Apache-Version preis. Durch Suchfunktionen kann man dem Besucher mit einer eigenen Fehlerseite einen Mehrwert bieten:

ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

Anschließend müssen nur noch die entsprechenden HTML-Dateien (es kann natürlich auch auf virtuelle Ordner (siehe 1. Beispiel) verlinkt werden) erstellt und mit Inhalt gefüllt werden.

8. Beispiel: Dauerhafte Weiterleitung einer Webseite

Wer mit einer Webseite dauerhaft umgezogen ist, sollte den 301er Header verwenden um dies mitzuteilen:

Redirect 301 / http://dieneuedomain.de

Und wenn du Lust hast, kannst du dir selber ein weiteres Beispiel basteln, das du benötigst, wenn die Pfade an sich gleich bleiben und sich nur die Domain ändert.

Tipp: Verwende dahinter den Paramter [R=301] um mitzuteilen, dass diese Änderung dauerhaft besteht.

9. Beispiel: Browser Caching

In der .htaccess kannst du Vorgaben für das sogenannte Browser Caching festlegen.

So kannst du dem Browser beispielsweise empfehlen CSS-Dateien für zwei Wochen auf dem Gerät zu speichern und erst nach Ablauf der Zeit die Datei wieder neu abzufragen.

 

ExpiresActive On
ExpiresByType text/css "access plus 2 weeks"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 3 months"

Dieses Beispiel sollte selbsterklärend sein. Für jede Dateiart, braucht es einen ExpiresbyType Befehl. Nach der Angabe der Dateiart folgt in Klammern die Angabe, wie lange gecacht werden soll.


10. Beispiel: Directory Listing

Directory Listing verhindert oder erlaubt je nach Einstellung das Anschauen der Verzeichnisinhalte.

Wenn Directory Listing beispielsweise aktiviert ist und ein Besucher http://eineseitevondir.de/einordnervondir/ aufruft, werden ihm alle Inhalte des Ordners angezeigt, um das Directory Listing zu verhindern und stattdessen eine 403-Fehlermeldung anzuzeigen kannst du folgenden Befehl nutzen:

Options -Indexes
um es hingegen zu erlauben, muss der Code nur leicht abgeändert werden:
Options +Indexes

Zudem gibt es noch weitere Einstellungsmöglichkeiten z.B. für eine klassiche Liste (IndexOptions -FancyIndexing) oder eine etwas verbesserte Liste mit Symbolen (IndexOptions +FancyIndexing). Evtl. möchtest du auch spezielle Dateien verstecken, auch dafür gibt es ein Code Snippet:

IndexIgnore *.gif *.png (schließt alle GIF- und PNG-Dateien aus) oder spezieller IndexIgnore bild.gif bild.png (schließt die Dateien bild.gif und bild.png aus).

Eine weitere Möglichkeit ist es statt dem Directory Listing und der Index Datei eine andere Datei festzulegen die standardmässig bei dem Ordneraufruf angezeigt wird:

DirectoryIndex newindex.php