Was ist htaccess?

Mit einer .htaccess Datei in einem Verzeichnis können Sie das Verhalten des Webservers für dieses und alle darunterliegenden Verzeichnisse beeinflussen. Sie können z.B. den Zugriff auf die Webseiten in diesen Verzeichnissen nur für bestimme IP-Absender oder nur gegen Namen und Passwort erlauben.
In einer .htaccess Datei können viele verschiedene Anweisungen stehen. Aus Sicherheitsgründen sind aber nicht alle für den Apache Server möglichen Anweisungen erlaubt.

Auf was ist zu achten?

  • .htaccess wird auf allen virtuellen Webserver unterstützt. 

    ACHTUNG: .htaccess ist nur mit dem Webserver Apache wirksam. Bei den virtuellen Webservern wird aber nginx als Proxy und direkten Verarbeitung von statischen Seiten benutzt. Kontrollieren Sie ob .htaccess bei allen Dateitypen (z.b. .php und auch statischen Dateien) wirkt. Stellen Sie ansonsten in in der Webserveradministration Plesk (Meine Dienste > Webserver bearbeiten > Plesk > Einstellungen für Apache & Nginx" die "Intelligente Bearbeitung statischer Dateien" aus und "Proxymodus" ein.

  • Es ist wichtig, daran zu erinnern, dass Unix case-empfindlich ist und dass "Index.htm" nicht dasselbe ist wie "index.htm".
  • Zeilen im .htaccess die mit # anfangen sind Bemerkungen.
  • Schreiben Sie alle Datei- und Verzeichnisnahmen in Kleinschrift - das minimiert Tippfehler.
  • Testen Sie die Einstellungen am Schluss.
  • Zugriff mit Passwort: 
    Sie können diese Variante der .htaccess Datei sehr einfach über ein Webinterface erstellen. Dabei wird etv. vorhandene .htaccess Datei überschrieben und die Namen mit Passwörtern in einer .htpasswd Datei im gleichen Verzeichnis erstellt.
    Mit dem Webinterface können Sie aber nur das Unterverzeichnis /secure (und alle darin enthaltenen Verzeichnisse auch separat) schützen. Wenn Sie keinen Shell-Zugang haben, können Sie mit dem Webinterface die nötigen Dateien .htaccess und .htpasswd sehr einfach erstellen und mit einem FTP-Client in ein beliebiges anderes Verzeichnis kopieren.
  • Alle in einer .htaccess-Datei festgelegten Einstellungen gelten für das aktuelle Verzeichnis und für alle Unterverzeichnisse (sofern dort nicht eine andere .htaccess-Datei vorhanden ist.)

 

Fehlermeldung 403 Erscheint beim Aufruf eines Verzeichnisses die Fehlermeldung 403?
Dann gibt es keine Index-Datei und der Verzeichnisinhalt darf nicht aufgelistet werden.
Lösung:

  • Erstellen Sie eine Datei mit Namen index.html oder index.htm oder index.php mit dem gewünschten Inhalt. Diese Dateien werden in jedem Verzeichnis direkt angezeigt.
  • Erstellen Sie eine Datei mit Namen .htaccess und einer Text-Zeile "Options +Indexes". Damit wird in diesem und allen Unterverzeichnissen der Inhalt aufgelistet.

 

Sicherheit
Sicherheitslücken sind in einem System nie vollständig auszuschliessen. Mögliche Sicherhteitsprobleme sind der unerlaubte Zugriff auf Daten die nur mit Namen und Passwort oder nur für gewisse Absender erreichbar sein sollten. Aber auch da umgekehrte, dass Daten überhaupt nicht mehr zugänglich sind. Bitte beachten Sie folgende Punkte:

  • Testen Sie alle gemachten Einstellungen am Schluss!
  • Im Notfall können Sie eine .htaccess Datei einfach löschen. Es gelten dann die Anweisungen der nächst höher gelegenen .htaccess Datei oder wenn keine vorhanden ist des Webservers.

 

Debuggen / Loggen
Fehlermeldungen erscheinen häufig direkt im Browser.
Im Verzeichnis "/logs" stehen die Zugriffsdaten für den letzten Tag in der Datei "httpd.access_old" zur Verfügung. Diese Daten werden automatisch und täglich in eine aussagekräftige Webstatistik verarbeitet.

Anweisungen
Folgende Options sind bei allen Webservern automatisch aktiv:

  • -Indexes
  • +SymLinksIfOwnerMatch
  • -IncludesNoExec

Es sind nicht alle Anweisungen in einer .htaccess Datei erlaubt.
Auf unserem Hosting sind, neben den Basis-Direktiven, folgende Direktiven freigeschaltet:

  • AuthConfig
  • Indexes
  • Limit
  • FileInfo
  • Options: Indexes, SymLinksIfOwnerMatch, Multiviews

 

Anleitungen
Eine vollständige Liste der damit möglichen Anweisungen finden Sie bei www.apache.org.

Beispiele
Hier einige typische Beispiele für .htaccess Dateien:

Verzeichnisinhalt in aktuellen und darunter liegen Verzeichnissen anzeigen:

#Verzeichnisinhalt anzeigen
Options +Indexes

 

Beispiel für passwort geschützte Datei (oder Verzeichnis):

# Konfiguration Passwortschutz
AuthName "Nur mit Passwort"
AuthType Basic
AuthUserFile /path/to/the/htpasswordfile/.htpasswd
require valid-user

Dazu gehört natürlich die Datei .htpasswd mit den Namen und den Passwörtern.


anton:u9idEyhN/.jSI
emil:yU8eLSs.C3x/w
berta:xi9695EeMO4Pg
clara:U71hPIKtBh896

Am einfachsten erstellen Sie eine Datei über das Webinterface und kopieren sie dann an die gewünschte Stelle. Sie können eine .htpasswd Datei für verschiedene .htaccess Dateien benutzen.
Falls Sie die Option "Shell" haben, können Sie die .htpasswd Datei auch mit dem Programm htpasswd erstellen und ändern.

 

Beispiel um https zu erzwingen (nur mit Option "Secure Server"):

# HTTPS-Verschluesselung erzwingen
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
# fuer alle Dateien
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI}

 

Beispiel einer Weiterleitung:

# Weiterleitung
Redirect permanent /alteseiten/index.htm http://www.dein-name.ch/

 

Beispiel einer Umleitung aller Anfragen an einen Webserver-Alias in ein Unterverzeichnis:

# Umleitung Webserver-Alias in Unterverzeichnis
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.
RewriteRule ^(.*)$ /verzeichnis/$1 [L]

 

Beispiel für das Anzeigen eigener Webseiten bei Webserver-Fehlern:

# Zeiger auf meine angepassten Fehlermeldungen. 
ErrorDocument 401 /fehler401.html
ErrorDocument 403 /fehler403.html
ErrorDocument 404 /fehler404.phtml

Natürlich müssen dann auch die 3 entsprechenden Webseiten vorhanden sein.

 

Beispiel um Zugriffe von bestimmten IP-Absendern zu erlauben oder zu verhindern:

#Zugriff von allen IP-Absendern 195.65.53.X erlauben
order deny,allow
allow from 195.65.53.
deny from all

 

Beispiel um Zugriffe von bestimmten Namen zu erlauben oder zu verhindern:

#Zugriff für alle rhone.ch Absender erlauben
order deny,allow
allow from rhone.ch
deny from all

 

Beispiel Dateien komprimiert zum Client Browser zu liefern.

SetOutputFilter DEFLATE
  • Web, htaccess
  • 2 Users Found This Useful
Was this answer helpful?

Related Articles

Wie erstellt man einen Kennwortschutz für seine Website?

Als Webserver-Betreiber hat man die Möglichkeit, Direktiven (.htaccess) so zu setzen, dass der...

Wie ist ein htaccess-File aufgebaut?

Mit einer .htaccess Datei in einem Verzeichnis können Sie das Verhalten des Webservers für dieses...

Warum erscheint die erste (die Haupt-) Seite nicht automatisch?

Der Server sucht in jedem Verzeichnis nach einer Datei "index.html", "index.htm" oder...

Verzeichnisinhalt erscheint nicht - Fehler 403?

Möchte man den Inhalt der Verzeichnisses anzeigen lassen (Index) so muss dies erlaubt werden:...

Wie benutze ich die Indexierung?

Wenn in einem Verzeichnis eines Webservers keine index.html (.php .htm) Datei ist, so wird...