Die (versteckte) Datei .htaccess für Apache

Ein Versuch sich diesem Mysterium zu nähern

Fehlerhafte Eingaben in dieser Datei können ihre Webseiten für Besucher und/oder Suchmaschinen unzugänglich machen!

Sie sollten unbedingt vor Veränderungen dieser Datei sich
1.) etwas Wissen anlesen,
2.) Ihren Server kennen (Apache Version:<?php phpinfo(); ?>, oder Nachfrage beim Hoster),
3.) ein Backup der Originaldatei erstellen, sowie
4.) wissen, wie Sie diese Backupdatei mit einem FTP-Programm (wie zum Beispiel FileZilla) wieder in Ihr Stammverzeichnis bei Ihrem Hoster hochladen können (Sie brauchen das Passwort).
Außerdem sollten Sie wissen, was Dateiattribute bedeuten und wie man diese verändern kann (FileZilla). Die hochgeladene Backupdatei muss dieselben Attribute besitzen wie das Original. Um sicher zu gehen, lesen Sie diese Rechte bitte vor irgend einer Aktion aus und notieren sich diese Werte - falls durch die Backup-Aktion Attribute verändert werden.

Wichtiger HINWEIS: Es gilt der im Disclaimer angegebene Haftungsausschluss. Der Inhalt von Webseiten kann sich über Nacht verändern. Die Hyperlinks werden nur sehr selten überprüft! Es gilt: Keinerlei Gewähr für fremde Webseiten! Keinerlei Haftung für eventuelle Schäden durch Befolgen der Tipps und Anleitungen dieser Seite oder empfohlener Programme!
Sehen Sie sich deshalb die neue Seite genau an bevor Sie irgend etwas darauf anklicken. Verlassen Sie die fremde Webseite sofort wenn sie nicht den erwarteten Inhalt hat, achten Sie bitte auf die Warnungen Ihres modernen Browsers und Ihrer aktuellen Antivirensoftware. Bitte informieren Sie bei verdächtigen Seiten auch den Seitenbetreiber über "Kontakt" in der Fußzeile jeder Seite.

Beachten Sie bitte: Bei dieser Internetseite handelt es sich um eine archivierte Seite, die nicht regelmäßig aktualisiert oder überprüft wird und veraltet sein kann. Diese Seite wurde primär für die Nutzung durch den Autor selbst erstellt.

Inhalt

  1. Anleitungen
  2. Generatoren
  3. Beispiele
  4. Adressen und IP's sperren - Strategien gegen Bilderdiebe und böse Bot's
  5. Redirect - Dateien um- und weiterleiten
  6. Passwortschutz mittels htaccess
  7. Sonstige Einstellungen in einer .htaccess

Anleitungen

selfHTML bietet auf dieser Seite eine ausführliche Erläuterung der erlaubten Anweisungen in einer .htaccess-Datei.

http://sw-guide.de/webdesign-und-entwicklung/htaccess-mod_rewrite-fuer-cms-und-blog/ - Software Guide - Tipps, Anleitungen, Weblinks, News und Eigenentwicklungen zu Software

Adressierung im Internet - IP-Subnetting Um Netzwerke bilden zu können, ist es erforderlich, einen Adressraum in einzelne Netzwerke einteilen zu können. Dieses Bilden von Unternetzen nennt man "Subnetting".

Generatoren

htaccess-Generator (www.fueralles.de) Wer sich nicht groß mit dieser wichtigen Datei beschäftigen möchte, kann hier eine einfache htacess-Datei nach Vorgabe generieren lassen. Achtung, Fehler in dieser Datei können zum Beispiel zur Folge haben, daß Suchmaschinen Seiten oder ganze Verzeichnisse nicht lesen, ja sogar für Surfer überhaupt nicht mehr zugänglich sind!

htaccess Generator (cooletips.de/htaccess/) Umfangreicher Generator.

all-inkl.com Eine htaccess mit Passwortschutz, Weiterleitung oder div. Kleinigkeiten generieren lassen

Htaccess Tools Use our online generators to create .htaccess files for hotlink protection, password protection, htpasswd files, htaccess authentication. - Recht brauchbar aussehende Generatoren

Adressen und IP's sperren - Strategien gegen Bilderdiebe und böse Bot's

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_REFERER} ^http://(www\.)?bildklauer\.de(/.*)?$ [OR]
RewriteCond %{HTTP_REFERER} ^http://(forum\.)?andererbildklauer\.com(/.*)?$ [OR]
RewriteCond %{REMOTE_HOST} ^000.000...* 
RewriteRule ^.*$ X.html [L]

RewriteEngine on- muß nur einmal in der htaccess eingetragen werden, auch wenn verschiedene Regeln festgelegt werden.
RewriteCond %{HTTP_REFERER} ^http://(www\.)?bildklauer\.de(/.*)?$ [OR]  #Eine Domain, auf der unerlaubt und ohne Backlink Hotlinks auf einige meiner Bilder gesetzt wurden.
RewriteCond %{REMOTE_HOST} ^000.000...*  #Besucher oder ein Bot mit dem IP-Adressbereich 000.000.xxx.xx.xxx

Damit habe ich den Spider von sogou.com gesperrt, der pro Monat mehr als 1,5 Gigabyte(!) Traffic verursachte! Falls jemand ebenfalls Probleme mit diesem unverschämten Chinesen hat, der auf die robots.txt nicht reagiert: RewriteCond %{REMOTE_HOST} ^220.181...* oder %{REMOTE_HOST} ^220.181.0.0/16
In den Logfiles sind daraufhin die 404 er Fehler (Document Not Found) auf über 30.000 geklettert. :) Im Fall von sogou gibt es so viele Adressen, daß der Bereich als Ganzes gesperrt werden musste, was den Verdacht nahelegt, daß sogou.com mit CHINANET verbandelt ist. Da sogou.com also offensichtlich Teil des CHINANET Telecom-Unternehmens ist (so interpretiere ich das jedenfalls), sperre ich damit zwar wohl alle Chinesen, die mit CHINANET einen Vertrag haben ebenfalls aus, aber sooo viele Chinesen werden sich wohl nicht auf meine Seiten verirren. Allerdings könnte es sich auch um eine Art Zensur handeln. Meine betroffene Seite beinhaltet auch einen Spiegel des ODP, auch chinesisch. Wenn Sogou soviel Traffic verursacht, werden die meisten betroffenen Webmaster CHINANET-sogou aussperren - vielleicht ist das ja beabsichtigt. Oder kennt jemand eine dezidiertere Methode, Sogou zu kappen?

[OR]- weist Apache darauf hin, daß eine weitere RewriteCond-Regel folgt, die zutreffen kann. Alle Regeln (außer der Letzten), die IP's oder Adressen sperren, müssen in unserem Beispiel diese Anweisung haben. (Siehe die Tutorials für den Unterschied zwischen [OR] und [NC].)
RewriteRule ^.*$ X.html [L] - leitet die Anfragen auf die nicht vorhandene X.html um.[L] bedeutet, daß keine weitere RewriteRule mehr folgt und die Schleife abgeschlossen ist.
Alternative: RewriteRule ^.*$ - [F,L]F steht für Forbidden.

Die erste Lösung sah so aus:
SetEnvIfNoCase Referer "meine\.domain\.com" local_ref=1
   <FilesMatch "\.(gif|jpg|png|swf|mpg|avi)$">
   Order Allow,Deny
   Allow from env=local_ref
   Allow from images.google.
   Allow from images.search.yahoo.
   </FilesMatch>

Dies erlaubt nur den Zugriff auf Bilder von meiner eigenen Domain. Explizit images.google. und images.search.yahoo. dürfen ebenfalls Bilder anzeigen. Das Ganze ist aber nur teilweise überprüft und noch nicht ganz ausgearbeitet. Es gibt bessere Wege um den Bilderdiensten den Zugriff zu erlauben, glaube ich. Also eine Lösung in Reseve, sollte der Klau überhand nehmen.
Andere gefundene Lösungsvorschlage um Google zu erlauben (ungetestet):

RewriteEngine on
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://my\.ip\.123\.45 [NC]
RewriteCond %{HTTP_REFERER} !^http://.*google\.(com¦(co\.)?[a-z]{2})/(imgres¦search) [NC]
RewriteRule \.(jpg¦gif¦zip¦png)$ /myfile.jpg [NC,L]

oder

<Files ~ "\.(gif|jpe?g|png)$">
ErrorDocument 403 http://www.mysite.de/images/default.jpg
SetEnvIfNoCase Referer "^http://www.mysite.de" local_ref=1
SetEnvIfNoCase Referer "^http://mysite.de" local_ref=1
SetEnvIfNoCase User-Agent "^Mediapartners-Google" local_ref=1
SetEnvIfNoCase User-Agent "^Googlebot-Image" local_ref=1
Order Allow,Deny
Allow from env=local_ref
</Files> 
Einige Links zum Thema böser Bot  guter Bot:

Findet man in den Log-Files zum Beispiel die IP-Adresse eines bösen Buben, der eine Menge Traffic verursacht oder eines Spambots, helfen die Seiten

http://www.robotstxt.org/ The Web Robots Pages

http://whois.gwebtools.com/ Whois domain name lookup, whois record, domain search, keyword score, name server spy and domain owner

herauszufinden, welche Adressbereiche ein Bot hat, denn die haben praktisch nie nur eine einzige Adresse. Näheres zur Adressierung - siehe Anleitungen.
Weitere Seiten:

http://www.projecthoneypot.org/ A free, distributed, open-source project to help website administrators track, stop, and prosecute spam harvesters stealing email addresses from their sites.

TP: [Anfänger] [Tutorial] 5 Techniken um sich vor Trafficklau und Bilderdieben zu schützen

Links zum Thema Dateiendiebe

http://perishablepress.com/press/2007/07/16/allow-google-reader-to-access-hotlink-protected-images/

Redirect - Dateien um- und weiterleiten

RedirectMatch permanent xyz.htm http://meine.domain.com/xyz.php

oder

RedirectMatch 301 xyz.htm http://meine.domain.com/xyz.php

Ein einfacher redirect (301) einer Datei, die umbenannt wurde. Wichtig auch, um Sumas davon in Kenntnis zu setzen! Solche Dinge in eine separate .htaccess legen, wenn Unterverzeichnisse betroffen sind. Die .htaccess in root sollte so knapp wie möglich gehalten werden, erst wenn ein Surfer tatsächlich die betroffene Datei aufruft, sollte die htaccess im entsprechenden Unterverzeichnis gelesen werden (Performance).

Redirect permanent /unterverzeichnis/ http://www.domain.tld/unterverzeichnis/

Leitet ein Unterverzeichnis auf eine (neue) Domain um.

RedirectMatch 301 ^/pfad/(.*) http://domain.tld/unterverzeichnis/datei.php

Leitet alle Dateien von pfad/*.* auf die DATEI domain//unterverzeichnis/datei.php um.

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

oder, der umgekehrte Fall:

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

Alle Anfragen nach http://beispiel.com werden permanent auf http://www.beispiel.com umgeleitet oder umgekehrt. RewriteEngine on muß gesetzt sein. (R=301 Bedeutet den permanenten externen Redirect.) Sehr nützlich, um Suchmaschinen klar zu machen,  daß es sich nicht um doppelten Inhalt handelt, da sie jetzt nur eine Domain erkennen (http://beispiel.com und http://www.beispiel.com sind für Sumas zwei verschiedene Domains mit gleichem Inhalt, was zu schlechterem Ranking führen kann).

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

Bewirkt, daß die dynamische PHP-Datei 'datei.php?section=news17' im gleichen Verzeichnis wie die .htaccess als 'statische' Datei auch mit dem Namen 'news17.html' usw aufgerufen werden kann, falls Google die php?-Datei nicht indiziert. Alle Links können dann auf news17.html gesetzt werden und gauckeln den Sumas eine statische Datei vor.

RewriteEngine on
RewriteRule ^index.(php|html|htm)$ http://www.domain.tld/ [R=301,L]

Alle Anfragen nach der Indexdatei werden auf die Domain umgeleitet.

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^$
RewriteCond %{HTTP_HOST} ^www.beispiel.de$
RewriteRule ^$ http://www.beispiel.de/index.php [L,R=301]

Leitet alle Anfragen nach http://www.beispiel.de/ auf http://www.beispiel.de/index.php um.

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,QSA,L]
RewriteRule ^index\.(html?|php)$ https://%{HTTP_HOST}/ [R=301,QSA,L]

Zeilen 2 und 3 leiten alle Anfragen nach http://xyz.de/ auf http://www.xyz.de/ um, doppelter content wird so vermieden. Die letzte Zeile leitet Anfragen nach index.htm auf index.php um.

Links zum Redirect

Inhaltsverzeichnis www.schmager.de Beschäftigt sich in drei sehr interessanten Artikeln mit redirect.

301 Weiterleitung "Wenn Webseiten umbenannt werden, oder eine Website auf eine andere Domain umzieht, kann man von den alten Dateien auf die neuen mit einem sogenannten permanent Redirect (301 Redirect) weiterleiten." (Zitat der Webseite)

Passwortschutz mittels htaccess

AuthName "Test"
AuthUserFile /vollständiger Pfad zur Datei/.htusers
<Files phpinfo.php >
Require user  Name </Files>

Hiermit wird die Datei phpinfo.php auf diesen Seiten mit einem Passwortschutz versehen. .htusers enthält das verschlüsselte Passwort. Hat man den Apache installiert, kann man sich auf der Konsole mit htpasswd -h die Hilfe des Programmes htpasswd anzeigen lassen, das auf höchst einfache Weise ein verschlüsseltes Passwort samt der Datei .htusers generiert. Bsp: htpasswd -c /absoluter pfad/.htusers Name Es folgt die übliche zweimalige Passwortabfrage und die Datei wird erzeugt. Diese Art des Passwortschutzes ist anderen Methoden weit überlegen. Aber - auch kein 100%iger Schutz, ein Restrisiko bleibt. :)

Sonstige Einstellungen in einer .htaccess

ErrorDocument 404 "<html><head><title>Die Seite ist nicht vorhanden</title>\
                   <style type='text/css'>\
                   body {background-color:#990000; text-align: center; color:#ffffff;}\
                   h1,p,a {font-family:Helvetica,Arial,Sans-serif;}\
                   h1 {font-size:1.7em; margin-bottom:0em;}\
                   p {font-size:0.95em;}\
                   a {font-size:1.2em; text-decoration:none; color:#8CE367;}\
                   a:link,a:visited {color:#000080;}\
                   a:hover {color:#FF0000;}\
                   </style>\
                   </head><body>\
                   <h1>Fehler 404</h1>\
                   <p>Die angeforderte URL kann leider nicht gefunden werden.</p>\
                   <p>Probieren Sie es bitte erneut mit einem Aufruf der\
                   <a href='/'>Startseite</a>.</p>\
                   </body></html>"

#Einfache eigene Fehlerseite 404, in die .htaccess integriert.

Options -Indexes

#Verzeichnis-Browsing ist untersagt

Options +Indexes  

#Verzeichnis-Browsing ist erlaubt

AddDescription "____Vorschaubild__©__" .jpg

#Wenn Verzeichnis-Browsing erlaubt, wird dieser Beschreibungstext bei Suffix jpg angezeigt

ReadmeName copyright.txt

#Stellt beim Verzeichnisbrowsing den Inhalt von copyright.txt als Fußnote dar

IndexIgnore copyright.txt

#Listet beim Verzeichnis-Browsing die angegebene Datei nicht auf

mod_gzip_on Yes

#Schaltet die Datenkompimierung ein.

RewriteRule ^(.*)\.html$ $1.php

#Alle Dateien mit der Suffix php sind auch mit der Suffix html aufrufbar. RewriteEngine on muß gesetzt sein. Darauf achten, daß kein doppelter Content entsteht.

RedirectMatch ^/include/(.*) http://www.beipiel.de/index.php

#Sperrt das Verzeichnis include komplett und leitet Anfragen darauf nach http://www.beipiel.de/index.php um. Es sollten sich nur includierte Dateien in include befinden, liegen dort z, B. auch Bilder, werden diese nicht mehr angezeigt. Dies gilt auch für mittels PHP dynamisch erzeugte Grafiken!

DirectoryIndex datei.php

#Legt die Datei datei.php als Indexdatei des Verzeichnisses fest, in der sich die .htaccess befindet.

Λ