. .

.htaccess• Server-Konfiguration

.htaccess Dateien

.htaccess- Dateien sind Konfigurationsdateien mit denen man die verzeichnisspezifischen Einstellungen auf NCSAInformationBedeutung: NCSANational Center for Supercomputing Applications-kompatiblen Webservern, wie beispielsweise Apache, in der zentralen Konfigurationsdatei httpd.conf. überschreiben und individuell definieren kann.




Änderungen in der .htaccess-Datei sind sofort und ohne einen Server-Neustart wirksam, da diese bei jedem Seitenzugriff vom Webserver ausgewertet werden. Die .htaccess- Dateien gelten nur für das Verzeichnis, in dem sie gespeichert sind, sowie allen Unterverzeichnissen. Sie können in den Unterverzeichnissen jedoch wieder überschrieben werden.


.htaccess • Verzeichnisschutz

.htaccess-Datei

Die .htaccess-Datei ist verzeichnisspezifisch, sie schützt also das Verzeichnis in dem sie sich selbst befindet. Wahlweise können Sie das gesammte Verzeichnis inklusiv aller Unterverzeichnisse oder auch nur bestimmte Dateien oder Dateitypen schützen.


Des Weiteren kann der Verzeichnisschutz für einzelne Benutzer oder für Benutzergruppen eingerichtet werden. Ebenso ist eine Kombination beider Varianten möglich. Für den Verzeichnisschutz mit Passwort ist neben der eigentlichen .htaccess-Datei noch eine Datei, in der Sie die Benutzernamen und die zugehörigen Passwörter speichern, erforderlich (bsw .htpasswd oder .htuser). Für den Fall, dass Sie die Freigaben für Benutzergruppen einrichten möchten, ist hier ebenfalls eine weitere Datei erforderlich, in der die Benutzergruppen definiert werden (.htgroups).

Verzeichnisschutz für einzelne Benutzer


.htaccess - Datei

# .htaccess für Verzeichnis /intern
AuthType Basic
AuthName "Interner-Bereich"
AuthUserFile /home/www/web/admin/.htpasswd
require valid-user

.htpasswd - Datei

# .htpasswd für Verzeichnis /intern
Egon:Ieh6DHvyejvf2
Benny:rgeRD/cUQIFP6
Kjeld:68wOXOz96UQOU

Verzeichnisschutz für Benutzergruppen


.htaccess - Datei

# .htaccess für Verzeichnis /intern
AuthType Basic
AuthUserFile /home/www/web/admin/.htpasswd
AuthUserFile /home/www/web/admin/.htgroups
Require user Egon Kjeld Benny
Require group Olsenbande

.htpasswd - Datei

# .htpasswd für Verzeichnis /intern
Egon:Ieh6DHvyejvf2
Benny:rgeRD/cUQIFP6
Kjeld:68wOXOz96UQOU

.htgroups - Datei

# .htgroups für Verzeichnis /intern
Olsenbande: Egon Benny Kjeld

Verzeichnisschutz für bestimmte Dateien oder Dateitypen


.htaccess - Datei

# .htaccess für Verzeichnis /intern
AuthType Basic
AuthUserFile /home/www/web/admin/.htpasswd
AuthUserFile /home/www/web/admin/.htgroups
<FilesMatch "\.(html?|php)$">
Require user Egon Kjeld Benny
Require group Olsenbande
</Files>

Mit obigem Beispiel beschränken Sie den Zugriff auf alle .htm und .html Dateien sow auf alle .php Scripte.

Verzeichnisschutz an Hand der IP-Adresse oder IP-Bereich


.htaccess - Datei

# .htaccess für Verzeichnis /intern
Order deny,allow
Deny from .web.de
Deny from 192.168
Allow from 192.168.100.201

Mit obigem Beispiel definieren Sie die logische Interpretationsreihenfolge, wobei Deny from .web.de den Zugriff für Benutzer mit einer web.de Kennung verbietet. Ebenso wie, Deny from 192.168 allen Benutzern des IP-Adress-Bereichs 192.168 den Zugriff verweigert. Mit Allow from 192.168.100.201 definieren Sie die Ausnahme, dass dem Benutzer mit der IP-Adresse 192.168.100.201 der Zugriff erlaubt wird.



.htpasswd • Passwörter via crypt verschlüsseln

.htpasswd - Passwörter verschlüsseln


  


Hinweis


Sollten der Verzeichnisschutz via .htaccess nicht funktionieren, liegt dies gegebenenfalls daran, dass die AllowOverride-Direktive auf "None" gesetzt ist, und somit .htaccess-Dateien komplett ignoriert werden.


Schutzmechanismen der .htaccess-Dateien sind bei HTTP-Zugriffen sicherer als jene, die mit Hilfe von CGI-Scripts oder gar mit Hilfe von JavaScript erstellt werden. Sie sollten jedoch beachten, dass .htaccess keine absolute Sicherheit bietet und der Schutz nur für HTTP-Zugriffe von Web-Browsern oder anderen Web-Clients über den Webserver gilt und nicht, wenn der Zugriff beispielsweise via FTP-Client erfolgt.


.htaccess• Directory Listing

.htaccess - Verzeichnis Browsing

Beim Aufruf eines Verzeichnisses, in dem keine index-Datei vorhanden ist, wird dessen Verzeichnisindex angezeigt, was unter Umständen jedoch nicht gewünscht ist. Mit Hilfe der .htaccess Datei ist es möglich die Anzeige des Verzeichnisindex ein- bzw. auszuschalten.


Beispiel: Directory Listing abschalten

# Directory Listing aus
Option -Indexes

Beispiel: Directory Listing anschalten

# Directory Listing ein
Option +Indexes

Beispiel: Directory Listing individuell gestallten

# Datei für Verzeichnis /download
FancyIndexing On
AddDescription "WORD-Datei, öffnen" .doc .dot
AddDescription "EXCEL-Datei, öffnen" .xls .xlt
AddDescription "PDF-Datei, öffnen" .pdf
AddDescription "GIF-Grafik, öffnen" .gif
AddDescription "JPEG-Grafik, öffnen" .jpg
AddDescription "PNG-Grafik, öffnen" .png
AddDescription "ZIP-Archiv, downloaden" .zip
AddIcon /img/txt-icon.png txt
AddIcon /img/xls-icon.png xls
AddIcon /img/doc-icon.png doc
AddIcon /img/pdf-icon.png pdf
AddIcon /img/zip-icon.png zip
AddIcon /img/img-icon.png gif jpg png
AddIcon /img/dir.gif ^^DIRECTORY^^
AddIcon /img/leer.gif ^^BLANKICON^^


.htaccess• individuelle Fehlerseiten

.htaccess - Fehlerseiten

Mit der .htaccess Datei können Sie individuelle Fehlerseiten definieren, und so die in der Webserver-Konfiguration festgelegte Datei ändern.


Hierzu gibt es zwei Möglichkeiten, die erste ist, Sie erstellen eigene HTML-Dateien für die Fehleranzeige:

Beispiel: lokale Fehlerseiten im Wurzelverzeichnis

# Fehlerseiten im Wurzelverzeichnis
ErrorDocument 401 /du-kommst-hier-net-rein-401.htm
ErrorDocument 403 /dich-will-ich-nicht-403.htm
ErrorDocument 404 /ich-bin-weg-404.htm?error=404
ErrorDocument 500 /hast-mich-kaput-gemacht-500.htm

Beispiel: lokale Fehlerseiten im Unterverzeichnis

# Fehlerseiten im Unterverzeichnis
ErrorDocument 404 /verzeichnispfad/404.htm?error=404

Beispiel: externe Fehlerseiten

# externe Fehlerseiten
ErrorDocument 404 http://www.example.com/404.htm?error=404

Die zweite Möglichkeit, Sie lassen die Fehlermeldung direkt vom Webserver erzeugen:

Beispiel: hart kodierte reine Textausgabe

# Text für individuelle Fehlerseite
ErrorDocument 404 "Ups. Da ist wohl was schief gelaufen, die von dir angegebene Seite gibts hier gar nicht ;-)"

Beispiel: hart kodierte HTML-Ausgabe

# Eintrag für individuelle Fehlerseite
ErrorDocument 404 '<html><head><title>Seite nicht vorhanden</title>\
<style type=\'text/css\'>\
body {background-color:#FFFFFF;}\
h1,p,a {font-family:Arial,Sans-serif;}\
h1 {font-size:2em; margin-bottom:0em;}\
p {font-size:1em;}\
a {font-size:1em; text-decoration:none;}\
a:link,a:visited {color:#990200;}\
a:hover {color:#FF0000;}\
</style>\
</head><body>\
<h1>Fehler 404</h1>\
<p>Die angegebene Seite gibts hier gar nicht.</p>\
<p>Probier es doch mal mit der <a href="/">Startseite</a>.</p>\
</body></html>'

.htaccess • Weiterleitung per mod_rewrite

.htaccess - Redirect via mod_rewrite

mod_rewrite ist ein Apache Modul für die URL Manipulation. Mit der RewriteEngine des Apache-Webservers ist es möglich die angeforderte URL mit Hilfe von Regulären Ausdrücken "umzuschreiben".


Beispiel: Weiterleitung mit www

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Beispiel: Weiterleitung ohne www

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Beispiel: Weiterleitung von http nach https

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L]

Beispiel: Benutzerfreundliche URL

aus detail.php?artikelid=157&kategorieid=25 wird detail157/kategorie25.html

RewriteEngine on
RewriteRule ^detail([0-9]+)/kategorie([0-9]+).html$ /detail.php?artikelid=$1&kategorieid=$2

Beispiel: Umleitung ohne index.html um Seiten mit dem gleichen Inhalt auszuschließen

RewriteEngine on
RewriteCond %{THE_REQUEST} index\.html [NC]
RewriteRule ^index\.html$ http://example.com/ [L,R=301]

Um für einen bestimmten Ordner die SSL-Verschlüsselung zu erzwingen muss, wenn der Port ungleich 443 ist, ein Redirect erfolgen. Dies verhindert darüber hinaus eine Endlosschleife, da die Umleitung nur erfolgt, wenn die Verschlüsselung nicht bereits genutzt wird.

Beispiel: Änderung der Datei-Endung von .php auf .html

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

Um beispielsweise zu verhindern, dass der Besucher mitbekommt das er sich auf einer von PHP generierten Seite befindet, ist die Änderung der Datei-Endung sinnvoll. Des Weiteren ist dies für potentielle Angreifer nicht sofort offensichtlich.

Beispiel: IP-Adressen oder IP-Bereiche blockieren

RewriteEngine on
# blockiert 209.85.148.147 aus
RewriteCond %{REMOTE_ADDR} ^209.85.148.147 [OR]
# blockiert 209.85.148.* bis 209.186.158.* aus
RewriteCond %{REMOTE_ADDR} ^209.(8[56]).(14[89]|15[0-8]). [OR]
# erzeugt 403 Fehlermeldung (Forbidden)
RewriteRule ^.* - [F]

Beispiel: Spambots blockieren

# Spambots nach User_agent aussperren
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*adressendeutschland.*$
RewriteCond %{HTTP_USER_AGENT} ^Crescent [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPicker [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^LMSPIDER [OR]
RewriteCond %{HTTP_USER_AGENT} ^lmspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^Telesoft [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*TurnitinBot.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*JoBo.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft.URL [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*NEWT [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.Mozilla/2.01 [OR]
RewriteCond %{HTTP_USER_AGENT} ^NICErsPRO [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Whacker.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebBandit [OR]
RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[Bb]andit [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebEMailExtrac.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
# erzeugt 403 Fehlermeldung (Forbidden)
RewriteRule ^.* - [F]


.htaccess • Komprimierung per mod_deflate

.htaccess - "gzip" via mod_deflate

mod_deflate ist ein internes Modul des Apache Web-Servers und ermöglicht eine automatische Komprimierung bestimmter Dateien.


mod_deflate ist ein Algorithmus der von der apache Foundation für den Apache entwickelt wurde.

Beispiel: Komprimierung per mod_deflate

<IfModule mod_deflate.c>
<FilesMatch ".*\.(x?html?|php|css|js|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
</IfModule>

.htaccess • Komprimierung per mod_gzip

.htaccess - gzip via mod_gzip

mod_gzip ist ein externes Erweiterungsmodul für Apache Web-Server und ermöglicht eine automatische Komprimierung bestimmter Dateien, was die auszuliefernde Datenmenge reduziert und die Performance der Webseite entsprechend beeinflusst.


Beispiel: gzip Komprimierung per mod_gzip

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(x?html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

.htaccess • Traffic-Klau

.htaccess - Grafiken schützen

Beispiel: Anzeige eines roten X, wenn die Anfrage der Datei nicht von der vordefinierten URL kommt.

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

Bitte Beachten Sie, dass sich die Grafiken die verlinkt werden dürfen in einen Extraordner, der nicht geschützt wird, befinden müssen!



Linkempfehlungen

Verweise & Links

.htaccess- Dateien

» zum Seitenanfang

Tipps & Tricks

mehr zum Thema: nächster und vorheriger EintragMySQL nächsten und vorherigen Datensatz

Den alphabetisch nächsten und vorherigen Datensatzes aus einer Datenbank ermitteln und in alphatischer Reihenfolge den nächsten und vorherigen Datensatz ausgeben.

» mehr zum Thema: nächster und vorheriger Eintragmehr lesen

mehr zum Thema: Teil eines Datensatzes suchen und ersetzenMySQL Teilstring suchen und ersetzen

In einer Datenbanktabelle einen bestimmten Teil eines Strings suchen und diesen dann auszutauschen.

» mehr zum Thema: Teil eines Datensatzes suchen und ersetzenmehr lesen

mehr zum Thema: Browser & IP-Adresse indentifizierenPHP Browser identifizieren

Beim Aufruf einer Website sendet jeder Browser eine Kennung, die dem Server angibt, um welchen "User-Agent" es sich handelt.

» mehr zum Thema: Browser & IP-Adresse indentifizierenmehr lesen

mehr zum Thema: Datum und UhrzeitfunktionPHP Datum und Zeit

Für zeitgesteuerte Inhalte sind Datum- und Uhrzeitfunktionen unerlässlich. Grundlage bildet der von Unix-Systemen verwendete Timestamp.

» mehr zum Thema: Datum und Uhrzeitfunktionmehr lesen

mehr zum Thema: Anzahl Zeichen im String ermittelnPHP Zeichen & Wörter zählen

Häufig genügt es zu wissen, wie viele Zeichen der Text beinhaltet, php kann jedoch weitaus mehr.

» mehr zum Thema: Anzahl Zeichen im String ermittelnmehr lesen

mehr zum Thema: Zeichen & Zeichenfolgen ersetzenPHP Zeichen ersetzen

Häufig ist es notwendig mehrere Zeichen oder Zeichenfolgen innerhalb eines Strings zu ersetzen.

» mehr zum Thema: Zeichen & Zeichenfolgen ersetzenmehr lesen

mehr zum Thema: HTML-Entity - Maskierungen für SonderzeichenPHP HTML-Entities

Standardkonformer HTML-Code erfordert eine korrekte Ausgabe sämtlicher Literalen, dazu gehören auch und vor allem soggenannte HTML-Entity.

» mehr zum Thema: HTML-Entity - Maskierungen für Sonderzeichenmehr lesen

mehr zum Thema: Farbwerte von RGB nach HEX bzw. HEX nach RGBPHP RGB/HEX-Umrechner

Um die Farben einzelner Elemente auf Webseiten festzulegen, gibt es zwei Möglichkeiten. Die Farben können als RGB-Werte im Hexadezimalformat oder ...

» mehr zum Thema: Farbwerte von RGB nach HEX bzw. HEX nach RGBmehr lesen

mehr zum Thema: Perl Compatible Regular ExpressionsPHP PCRE-Funktionen

Die PHP PCREInformationBedeutung: PCREPerl Compatible Regular Expressions Funktionen sind eine Programmbibliothek zur Auswertung von Regulären Ausdrücken ...

» mehr zum Thema: Perl Compatible Regular Expressionsmehr lesen

mehr zum Thema: Regular Expressions / RegExpPHP Reguläre Ausdrücke

Reguläre Ausdrücke, auch Regex oder RegExp genannt, sind Zeichen- ketten, die ...

» mehr zum Thema: Regular Expressions / RegExpmehr lesen

mehr zum Thema: Regular Expressions / RegExpRegEx Beispiele

Praxisbzogene Regular Expression Beispiele für die Anwendung in PHP.

» mehr zum Thema: Regular Expressions / RegExpmehr lesen


Tastaturkürzel