[.htaccess]

Was ist .htaccess?

Mit Hilfe von .htaccess kann man Einstellungen, die von der Grundkonfiguration des Webservers abweichen sollen, eintragen.
Das ist z.B. nützlich, wenn Sie die Art und das Aussehen eines Verzeichnislistings bestimmen wollen, eigene Fehlerseiten einsetzen oder den Zugriff auf bestimmte Verzeichnisse einschränken wollen.

.htaccess ist ursprünglich ein Kind des Apache- Webservers, welcher im WWW weit verbreitet ist und wurde von einigen anderen Anbietern (NCSA, NES, SAMBAR) übernommen. Der Microsoft IIS kennt .htaccess in dieser Form nicht!

Wie funktioniert .htaccess?

In einer Datei (normalerweise heisst sie '.htaccess') werden die speziellen Einstellungen eingetragen. Diese Datei wird in dem Verzeichnis abgelegt, für welches die Einstellungen gelten sollen. Erhält der Webserver einen Request auf dieses Verzeichnis, so liest er die Datei '.htaccess' und führt die darin enthaltenen Anweisungen durch. Dieses Verfahren ist vor allem dazu gedacht, dass Benutzer Vorgaben für ihr 'public_html'-Verzeichnis ändern können.

Die .htaccess gilt für das aktuelle, sowie alle darunterliegenden Verzeichnisse, es sei denn, es liegt im weiterführenden Verzeichnisbaum eine weitere .htaccess vor.

Warum gehört der Punkt vor .htaccess?

Bei Unix- Betriebssystemen wird allen Dateien, die mit einem normalen ls (List) nicht angezeigt werden sollen, ein Punkt vorangesetzt. Es handelt also um eine Art versteckte Datei.

Muss die .htaccess .htaccess  heissen?

Nein, .htaccess ist der Standardname dieser Konfigurationsdatei, wie sie mit dem Apache- Webserver geliefert wird. Natürlich kann man den Dateinamen ändern, indem man in der httpd.conf beispielsweise folgenden Eintrag macht:
 
 
AccessFileName .irgendnedatei

Damit wird in allen Unterverzeichnissen die Datei .irgendnedatei als htaccess-Datei verwendet. Man kann auch mehrere Dateien definieren:
 
 
AccessFileName .datei .datei2

So werden die beiden Dateien .datei und .datei2 als htaccess-Datei verwendet.
 

Beispiel einer .htaccess
 
 
AuthName        "N8i's htaccess Demo"
AuthType        Basic
AuthUserFile    /home/projects/www/htdocs/secure/.htpasswd

<Limit GET POST>
require valid-user
</Limit>

Options +Includes +ExecCGI

DirectoryIndex index.html

AddDescription "Ein tolles Bild." /www/html/graphic.jpg
AddDescription "Eine Grafik" graphic.jpg
AddEncoding x-gzip gz
AddEncoding x-compress Z
AddType image/jpeg jpg
AddType image/gif gif
AddIcon /icons/continued.gif ^^DIRECTORY^^
AddIcon /icons/unknown.gif ^^BLANKICON^^
AddIcon /icons/box1.gif *g*
AddIcon /icons/a.gif html
AddIconByEncoding /icons/box1.gif x-compress

ErrorDocument 404 /www/error/error_404.html
ErrorDocument 500 http://www.nightfire.ch/www/error/error_500.html
ErrorDocument 403 "Kein Zugriff.

Zugriffsbeschränkung auf Verzeichnisse

Der wohl häufigste Grund, eine .htaccess einzusetzen, ist die Möglichkeit, damit den Zugriff auf Verzeichnisse und Dateien auf dazu berechtigte Benutzer einzuschränken, indem man den Zugang auf die Verzeichnisse mit einem Passwort belegt.

Um einen solchen Zugriffsschutz einzurichten, müssen neben der .htaccess noch eine (oder zwei) Dateien auf den Web-Server gestellt werden : Die eigentliche Paßwortdatei .htpasswd und bei Bedarf eine Gruppendatei .htgroup.
 
 
AuthName        "N8i's htaccess Demo"
AuthType        Basic
AuthUserFile    /home/projects/www/htdocs/secure/.htpasswd

<Limit GET POST>
require valid-user
</Limit>

AuthName Eine kurze Beschreibung des geschützten Web-Bereichs. Diese Beschreibung wird dem Anwender angezeigt, bevor Username und Password abgefragt werden.
AuthType Der üblicherweise verwendete Authorisierungstyp ist Basic; andere mögliche Typen sind z.b. PGP oder Kerberos, diese werden aber z.B. vom Apache-Server nicht unterstützt. In der vorliegenden Beschreibung wird nur auf Basic eingegangen, dieser Typ benutzt als Paßwortdatei eine weitere Textdatei.
AuthUserFile Dateibezeichnung der Paßwortdatei (siehe unten .htpasswd).
Speziell der NCSA Server (und auch Netscape) versteht an dieser Stelle nur einen vollständigen Unix Pfadnamen. Der Apache Server versteht an dieser Stelle auch Dateinamen relativ zur Document-Root. Relative Dateinamen sind dadurch gekennzeichnet, daß sie nicht mit einem Schrägstrich "/" beginnen.
AuthGroupFile (optional) Dateibezeichnung der Gruppendatei (siehe unten .htgroup). Diese Angabe ist nur erforderlich, wenn Sie in der Konfigurationsdatei .htaccess die Directive require group group1 group2 ... verwendet haben.
Für die Angabe des Dateinamens gelten die gleichen Anmerkungen wie für die Paßwortdatei.
<Limit> oder <Files> Mit einer der beiden Directiven wird angegeben, was geschützt werden soll.
Mit <Limit> werden alle Dateien in dem betroffenen Verzeichnis gegen den Zugriff über angegebene Methoden des Hypertext Transfer Protocols (http) abgesichert. Meist werden hier die Methoden GET (das "normale" Holen einer Seite) und evtl. auch noch POST angegeben.

Mit <Files> können einzelne Dateien oder Dateigruppen geschützt werden. Bei der Angabe der Dateien können Wildcards benutzt werden, und zwar der Stern "*" für eine beliebige Anzahl von Zeichen und das Fragezeichen "?" für genau ein Zeichen. So kann z.B. mit <Files *.htm*> der Zugriff auf alle HTML-Documente geschützt werden, während der Zugang auf andere Dateitypen im gleichen Verzeichnis (z.B. Bilder) frei ist.

Order allow,deny Hiermit geben Sie die Reihenfolge an, in der die Directiven ausgewertet werden.

Allow from gibt an, wem der Zugriff gestattet wird
Deny from gibt an, wem der Zugriff verweigert wird

require Mit der require-Directive wird angegeben, nach welchem Kriterium Benutzer zugelassen werden sollen. Es gibt hier drei alternative Möglichkeiten :
require user user1 user2 ... Gibt den Bereich gezielt nur den aufgelisteten Benutzern user1, user2 usw. frei. Diese Alternative erfordert einen hohen Pflegeaufwand.
require valid-user Gibt den Bereich für alle in der Paßwortdatei definierten Benutzer frei. Dies ist die am häufigsten verwendete Form, sie ist im Allgemeinen die Alternative, die sich am einfachsten pflegen läßt.
require group group1 group2 ... Es dürfen Benutzer zugreifen, die einer der aufgeführten Gruppen group1, group2 usw. angehören. Diese Variante bietet sich an, wenn man verschiedene Bereiche mit unterschiedlichen Zugriffsrechten versehen will, aber nur eine Paßwortdatei pflegen möchte.

.htpasswd

Die Datei .htpasswd ist die eigentliche Paßwortdatei. Sie kann z.B. so aussehen :

nightfire:32/a7xZJFbDoo
firenight:7dWdiLtedT8hA

Jede Zeile in der Datei definiert eine Benutzername/Passwort-Kombination. Es wird zuerst der Benutzername angegeben, gefolgt von einem Doppelpunkt. Dahinter steht das mit der Unix-Funktion crypt() verschlüsselte Passwort, das aber laut man-page nicht wirklich sicher ist. Wenn also jemand Zugriff auf die Paßwort-Datei auf dem Server hat, ist Ihr Sicherheitskonzept löchrig - auch wenn das nur in wenigen Fällen relevant werden dürfte. Die Datei .htpasswd sollte also nach Möglichkeit gegen Zugriff über http geschützt werden. Am besten legen Sie die Datei in einem Verzeichnis ab, das nicht unterhalb der Document-Root liegt. Diese Möglichkeit besteht aber bei den vielen Providern nicht. In diesem Fall legen Sie ein eigenes Verzeichnis für die Paßwortdatei(en) an und schützen dieses Verzeichnis wiederum mit Paßwort (require user eigener-user).

Wenn Sie eine neue Datei erstellen wollen, rufen Sie das Programm mit htpasswd -c Dateiname Username auf. Wenn die Datei bereits existiert (also ab dem Hinzufügen des zweiten Benutzernamens), lassen Sie das -c weg.
Sie werden nun zur Eingabe des Paßworts und zu dessen Wiederholung aufgefordert. Wenn es keine Fehlermeldungen gab, wurde die Datei korrekt mit Username und verschlüsseltem Paßwort angelegt.

Wenn Sie keine Programme auf Ihrem Server ausführen lassen können, können Sie sich die Datei auch selbst basteln, indem Sie den User-Namen gefolgt von einem Doppelpunkt eingeben und dann das verschlüsselte Paßwort dahinter kopieren. Die Verschlüsselung können Sie in diesem Fall über einige Seiten im WWW durchführen lassen:

http://www.cache-22.co.uk/cgi-local/c22encrypt.pl
http://www.linux-profis.de/php3/crypt.php3

Bei vielen Providern, die die Verwendung der .htaccess anbieten, wird oft im Konfigurationsmenü eine entsprechende Möglichkeit angeboten, alles interaktiv zu erstellen.

Grenzen der Sicherheit

Wenn noch andere auf den Server Zugriff haben sollten, müssen Sie bedenken, daß htaccess nur den Zugriff über das Internet beschränkt. Wer sich auf dem Server einloggt, kann Ihre Seiten ganz einfach anschauen. Diesen Zugriff können Sie nur mit der Vergabe von Zugriffsrechten auf der Ebene des Betriebssystems verhindern.

.htgroup

In der Datei .htgroup können Benutzergruppen definiert werden; sie gibt an, welcher Benutzer zu welcher Gruppe gehört. Die Datei kann z.B. so aussehen :

group1: user1 user2 user3
group2: fritz hans peter

Eine Gruppe wird definiert durch den Namen der Gruppe, gefolgt von einem Doppelpunkt und dann einer Anzahl von Benutzernamen derjenigen Anwender, die der Gruppe zugeordnet werden sollen. Die bei der Gruppendefinition angegebenen Benutzernamen müssen sich in der Paßwortdatei wiederfinden.
 

Neben der Zugriffsbeschränkung bietet die .htaccess einige weitere interessante Konfigurationsmöglichkeiten.
 

Definieren der Indexseite

Mit folgendem Eintrag kann die Indexseite definiert werden, die aufgerufen wird, wenn der Webserver einen Request erhält, der keine spezifische HTML- Seite enthält.
 
 
DirectoryIndex index.html index.htm index.shtml

Wenn Sie http://www.nightfire.ch/ in die Adresszeile Ihres Browsers eingeben, wird Ihnen, obwohl Sie keine HTML- Seite anfordern, die Datei index.html angezeigt. Der Webserver überträgt in diesem Falle die definierte Indexseite.

Werden mehrere Standarddokumente definiert, werden Sie in der angegebenen Reihenfolge gesucht und beim Auffinden der ersten Datei wird diese angezeigt. Liegt keine der definierten Dateien in dem betreffenden Verzeichnis, so sendet der Webserver ein Verzeichnislisting.

Eigene Fehlermeldungen definieren

Ein Webserver antwortet auf jeden HTTP- Request mit einem HTTP- Response, welcher wiederum einen Statuscode enthält (siehe auch Knowledge - TCP/IP ). Falls der Webserver den Request nicht ausführen kann, sendet er eine entsprechende Fehlermeldung an den Client. Diese Fehlermeldung wird in Form eines einfachen Textstrings oder einer HTML-Seite versandt, in der erklärt wird, welcher Fehler aufgetreten ist. Diese Fehlermeldung, bzw. -seite können Sie selbst bestimmen:

- reine Textmeldung
 
 
ErrorDocument 500 "Ein interner Fehler ist aufgetreten. Bitte informieren Sie den Betreiber der Webseite, falls der Fehler wieder auftritt.
ErrorDocument 400 "Bad Request! Die Anforderung war syntaktisch falsch und kann nicht ausgeführt werden.

Das Anführungszeichen ist hier nicht geschlossen. Dies ist kein Schreibfehler, das muss tatsächlich so sein.

- definieren einer HTML- Seite
 
 
ErrorDocument 500 /www/html/error/error_500.html

Achten Sie hierbei darauf, keinen relativen Pfad anzugeben! Möglich ist auch die Angabe einer Webadresse (URL):
 
 
ErrorDocument 500 http://www.nightfire.ch/error/error_500.html

Konfiguration von Optionen

Um weitere Optionen zu konfigurieren, verwenden Sie den Befehl Options. Hierbei können Optionen hinzugefügt oder entfernt werden. Dazu setzt man vor die Option entweder ein Pluszeichen (hinzufügen einer Option) oder ein Minuszeichen (entfernen einer Option).
 
 
Options +ExecCGI -Indexes -IncludesNOEXEC

 
ExecCGI Hiermit kann gesteuert werden, ob in den betreffenden Verzeichnissen CGI-Scripts ausgeführt werden dürfen oder nicht.
 
Includes Hiermit kann die Ausführung von "Server Side Includes" gesteuert werden. Mit +Includes werden SSI-Dokumente geparst, mit -Includes werden sie es nicht.
 
IncludesNOEXEC Hiermit kann gesteuert werden, ob die #exec und #include Tags in SSI-Dokumenten beachtet werden sollen, sprich ob SSI-Seiten CGI-Skripts starten können oder nicht..
 
Indexes Wie bereits weiter oben erwähnt, sendet der Webserver bei einer Anfrage, die kein explizites Dokument enthält (Bsp.: http://www.nightfire.ch/) standardmässig die definierte Indexdatei und wenn diese nicht vorhanden ist, ein Verzeichnislisting. Da gewisse Verzeichnisse nicht unbedingt eine Index- Datei enthalten und ein Listing vom Webmaster nicht erwünscht ist, lässt sich auch dies unterbinden. Mit der Indexes-Option können Sie steuern, ob ein Listing angezeigt werden darf oder nicht. Mit Options -Indexes sendet der Webserver kein Verzeichnislisting, sondern gibt den Statuscode (HTTP-Error) 403 zurück, mit Options +Indexes sind Verzeichnislistings erlaubt.

FancyIndexing

Mit FancyIndexing ist es möglich, dem Verzeichnislisting, falls erlaubt und keine Indexdatei vorhanden, ein Aussehen zu geben, welches dem Design Ihrer Website angepasst ist. FancyIndexing wird mit dem Befehl FancyIndexing On aktiviert. FancyIndexing bietet eine Reihe Optionen, um das Aussehen des Verzeichnislistings zu definieren.
 
AddDescription Hiermit definieren Sie, dass im Verzeichnislisting neben dem Dateinamen eine Beschreibung angezeigt wird.

AddDescription "Java Klassen Datei" xyz.class

Jetzt wird im Verzeichnislisting neben jeder Datei, die "xyz.class" heisst die Beschreibung "Java Klassen Datei" angezeigt. Beschreibungen gelten für alle Unterverzeichnisse.

Im Dateinamen können auch Wildcards eingesetzt werden ("*" und "?").
 

AddEncoding Diese Einstellung ermöglichkeit das Mapping einer Dateiendung zu einem MIME-EncodeType:

AddEncoding x-gzip gz
AddEncoding x-compress Z
 

AddType Mit dieser Einstellmöglichkeit können Sie MIME-Typen auf Dateiendungen mappen.

AddType text/plain txt
 

AddIcon Hiermit können die Icons, die im Verzeichnislisting für jede Datei angezeigt werden, bestimmt werden. Es gibt einige Möglichkeiten, Icons zu definieren.

AddIcon /icons/htm1.gif html

Bei diesem Beispiel wird bei jeder Datei, die die Endung html hat, das Bild /icons/htm1.gif angezeigt. Der absolute Pfad zum Bild geht hier vom DocumentRoot des Webservers aus.

Icons können nicht nur Dateiendungen zugeordnet werden, sondern auch einzelnen Dokumenten.

AddIcon /icons/nfx1.gif nightfire.html

So enthält jede Datei, die den Namen nightfire.html besitzt als Icon die Datei /icons/nfx1.gif.

Eine weitere Möglichkeit besteht darin, Verzeichnissen eigene Icons zuzuordnen.

AddIcon /icons/dir1.gif ^^DIRECTORY^^

Der String ^^DIRECTORY^^ steht für Verzeichnis. So wird jedem Verzeichnis das Icon /icons/dir1.gif zugeordnet. 

Auch hier können Wildcards eingesetzt werden:

AddIcon /icons/jaicon.gif ja*.html

Damit weist man jeder Datei, die mit ja beginnt und mit .html endet, das Icons /icons/jaicon.gif zu.
 

AddIconByEncoding   Hiermit können Icons nach dem MIME-Encoding-Type zugewiesen werden.

AddIconByEncoding /icons/zip.gif x-compress

Hiermit wird allen Dateien, die den MIME-Encoding-Type x-compress haben, das Icon /icons/zip.gif zugewiesen. Wichtig: Der MIME-Encoding-Type muss vorher spezifiert worden sein (siehe oben).
 

AddIconByType Hiermit können Icons nach dem MIME-Typ zugewiesen werden. Zu beachten gilt auch hier, dass vorher der MIME-Typ definiert sein muss. Bsp:

AddIconByType /icons/txt.gif text/html
 

DefaultIcon Mit der Variable DefaultIcon könnt Ihr den Dateien, für die kein Icon zugewiesen worden ist, ein Standardicon festlegen:

DefaultIcon /icons/def_icon.gif

So wird allen Dateien, für die nicht explizit ein Icon zugewiesen worden ist, das Icon /icons/def_icon.gif zugewiesen. Der Pfad zum Icon muss absolut, vom DocumentRoot des Webservers aus gesehen, sein.
 

HeaderName Bei dem Verzeichnislisting wird normalerweise im oberen Teil der aktuelle Pfad angezeigt. Mit der Angabe HeaderName können Sie dort auch einen eigenen Header definieren.

HeaderName HEADER

Die Datei HEADER muss sich im selben Verzeichnis befinden, ansonsten wird das herkömmliche Listing angezeigt.
 

ReadmeName Anstelle der Signatur des Servers, die am Ende des Listings angezeigt wird, können Sie ebenfalls eine eigene Anzeige bestimmen.

ReadmeName README

In diesem Beispiel wird der Inhalt der Datei README anstelle der Standardanzeige angezeigt.
 

IndexIgnore Hiermit können Dateien bestimmt werden, die keinesfalls im Verzeichnislisting angezeigt werden sollen. Die Angabe von Dateinamen, Dateiendungen sowie Wildcards ist hier erlaubt.

IndexIgnore .htaccess *.dat *.cgi
 

IndexOptions Mit IndexOptions kann man das Aussehen des Verzeichnislistings sehr stark beeinflussen.

IndexOptions IconHeight=60 IconWidth=35 IconsAreLinks ScanHTMLTitle

Dieser Befehl kennt mehrere Optionen:
 
IconHeight=[Wert in Pixel] Bestimmung der Höhe des angezeigten Icons neben dem Dateinamen.
 
IconWidth=[Wert in Pixel] Bestimmung der Breite des angezeigten Icons neben dem Dateinamen.

Höhe und Breite müssen immer in Kombination angegeben werden, eine einzelne Angabe wird vom Webserver ignoriert.
 

IconsAreLinks Icons haben die Funktion von Links
 
NameWidth=[n*] Bestimmung der Spaltenbreite der Dateinamenanzeige

NameWidth=15

legt fest, dass die Spalte für den Dateinamen 15 Zeichen breit sein soll. Als Wert kann auch ein Asterisk "*" verwendet werden, dann wird die Spaltenbreite aus dem längsten Dateinamen bestimmt.
 

ScanHTMLTitles Mit dieser Option wird der HTML-Seiten-Titel jeder HTML-Seite ausgelesen und in der Spalte "Description" angezeigt.
 
SuppressColumnSorting unterdrückt das Sortieren des Listings durch den Benutzer, indem die Links der Spaltenüberschriften ausgeschaltet werden.
 
SuppressDescription unterdrückt die Anzeige der Spalte Description.
 
SuppressLastModified unterdrückt die Anzeige der letzten Dateiänderung im Listing
 
SuppressSize unterdrückt die Anzeige der Dateigrössen im Listing
 
IndexOrderDefault bestimmt die Sortiereihenfolge des Verzeichnislistings. Dieser Befehl erwartet zwei Angaben, ob aufsteigend ("Ascending") oder absteigend ("Descending") sortiert werden soll und die Angabe der zu sortierenden Spalte. Möglich sind hier

"Name" (Dateiname),
"Size" (Dateigrösse),
"Date" (Datum der letzten Änderung) und
"Description" (Beschreibung).

IndexOrderDefault Ascending Name
 

AddAlt Ähnlich dem Alt- Attribut bei HTML- Tags können den Icons Tooltips zugeordnet werden.

AddAlt "Ich bin eine Datei" datei.gif

In diesem Beispiel wird dem Icon der Datei datei.gif als Beschriftung Ich bin eine Datei zugeordnet. Die Beschriftung muss zwischen Anführungs- und Schlusszeichen stehen. Die Verwendung von Wildcards ist erlaubt.

AddAlt "Beschriftung" abc*.html
 
 

AddAltByEncoding Zuordnung der Tooltips nach Encodingtyp

AddAltByEncoding "komprimierte Datei" x-gzip
 

AddAltByType Zuordnung der Tooltips nach Dateityp (MIME Type)

AddAltByType "Textdatei/Plaintext" text/plain
 


 
 
 

Rewrite Engine

Ein weiteres, äusserst interessantes Feature ist die Rewrite Engine des Apache- Webservers.
Das Apache Modul mod_rewrite ist ein Wahnsinnsteil, es ist ein sehr raffiniertes Modul, welches mächtige Funktionen der URL- Manipulation unterstützt. Hiermit können Sie nahezu alle Arten von URL- Manipulationen realisieren, von denen Sie immer träumten.
Der Preis, den Sie dafür bezahlen müssen, ist, die Komplexität dieses Moduls zu akzeptieren, denn der Hauptnachteil von mod_rewrite ist, dass es für Beginner nicht einfach zu verstehen und anzuwenden ist.

Mit anderen Worten: Mit mod_rewrite schiessen Sie sich entweder zuerst selbst in den Fuss und wenden es nie mehr an oder Sie lieben es aufgrund seiner mächtigen Funktionen für den Rest Ihres Lebens.

An dieser Stelle möchten wir nur auf einige wenige Funktionen eingehen, die leicht zu verstehen und umzusetzen sind, und die für das Gros der Besucher dieser Webseite den grössten Nutzen bieten.

Wer sich näher damit befassen möchte, dem sei die Apache Dokumentation empfohlen.

Fremde Links sperren

Oft ist es unerwünscht, daß Download-Dateien oder Bilder von fremden Servern "gelinkt" werden. Um das zu verhindern, kann man eine Datei .htaccess mit folgendem Inhalt in das entsprechende Unterverzeichnis kopieren:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://unix.nightfire.ch.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.nightfire.ch.*$ [NC]
RewriteRule /* http://www.nightfire.ch/ [R,L]

In diesem Beispiel wird jeder Zugriff auf das Verzeichnis, der nicht von der Domain unix.nightfire.ch oder www.nightfire.ch erfolgt, auf eine entsprechende Seite umgeleitet.

Voraussetzung ist, dass sich alle vor fremden Links zu schützenden Dateien zusammen mit .htaccess in einem eigenen Unterverzeichnis befinden, da sonst auch externe Links zu Ihren normalen HTML-Seiten nicht mehr möglich wären.

Die erste ReWriteCond-Anweisung sorgt dafür, dass es keine Probleme gibt, wenn der Browser oder Proxy die Adresse der vorherigen Seite (Referer) nicht meldet. Die Angabe [NC] bedeutet "No Case", Gross- und Kleinschreibung wird also ignoriert. Das R in [R,L] bedeutet Redirection (Umleitung), das L beendet die Umleitungs-Regeln.

Verlinkung von Bildern sperren

Ähnlich dem vorangehenden Beispiel (bei dem übrigens auch die Verlinkung von Bildern unterdrückt wird), lässt sich hier anstelle der Originalbilder eine Ersatzgrafik einblenden, falls eine fremde Webseite versucht, Bilder direkt von Ihrem Webspace zu verlinken.


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?erstedomain.de/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?zweitedomain.de/.*$ [NC]
RewriteRule \.(gif|jpg|GIF|JPG)$ http://www.erstedomain.de/images/ersatz.gif [R,L]

Als letzte Variante stellen wir ein Beispiel vor, um den Zugriff bestimmter Hosts auf Ihr Angebot zu verhindern.
Angenommen, Sie möchten verhindern, dass bestimmte Communities wie bspw. Beepworld, deren Mitglieder für ihr Bestreben, den Inhalt ihrer Webseite vorzugsweise auf anderen Servern zusammenzuklauen, bekannt sind, auf ihren Server zugreifen, wenden Sie folgende Rewrite Rules an:

Bei Apache Version >= 1.3b6


RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]

Bei Apache Version < 1.3b6


RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteRule ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1
RewriteRule !^NOT-FOUND/.* - [F]
RewriteRule ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1
RewriteRule !^NOT-FOUND/.* - [F]
RewriteRule ^NOT-FOUND/(.*)$ /$1

Hierbei wird die Liste der auszusperrenden Hosts in eine Datei (im Beispiel hosts.deny) geschrieben, welche folgendermassen aufgebaut ist:


##
## hosts.deny
##
## ACHTUNG! Dies ist eine Map, keine Liste, auch wenn diese als solche behandelt wird.
## mod_rewrite parsed sie in Schlüssel/Werte Paare, so dass zumindest
## ein Dummy Wert "-" für jeden Eintrag vorhanden sein muss.
##

beepworld.de -
beepworld2.de -
beepworld3.de -

Copyright © 1998- Nightfire Java Archiv