refkap  Home refkap  fbs refkap  Glossar refkap  Internet refkap  WWW refkap  Apache refkap  IPdienste
                refkap  BS1 refkap  BS2 refkap  BS3 refkap  SYS refkap  WO

Mehr zur .htaccess


^     
<-  |  ->

Voraussetzungen

Mit dieser Datei lassen sich vom Nutzer eines Webservers, ohne Zugang zur httpd.conf, dessen Arbeitsmöglichkeiten umfangreich steuern. Die Festlegungen in dieser Datei überschreiben die Serverdirectiven und sind bis zur erneuten Änderung in der jeweiligen Verzeichnisstruktur gültig.

Voraussetzung ist allerdings, dass die entsprechenden Möglichkeiten in der AllowOverride Directive (siehe) freigegeben sind.

Web-Admin sollte vor der Freigabe genau prüfen ob die Rechte für seine Nutzer notwendig sind.
Für den Hochschul- und FB-Server sind die Rechte AuthConfig und Limit gesetzt. Dies ermöglicht den Nutzer, den Zugang zu ihren Webseiten durch Passwort- und Domänkontrolle zu schützen. Die konkreten Einstellungen sind unter den Hinweisen zu den Servern an der HTW beschrieben.

Mit der Directive ALL bietet die .htaccess aber noch mehr Möglichkeiten. Diese sollen hier angesprochen werden.

Schutz von Dateien

Hinweis: Die hier gemachten Aussagen betreffen natürlich nur den Schutz bei Zugang über den Server.
Als Beispiel wollen wir "Punkt(Dot)dateien" schützen. Wie wir wissen, sollten und werden Dateinamen, die mit einen Punkt beginnen, für besondere Aufgaben genutzt. Sie bezeichnen Dateien/Verzeichnisse die Einstellungsparameter für (Dienst)Programme enthalten. Es ist also sicher sinnvoll, diese vor den Zugriff aus dem Internet zu schützen.
Seine eigenen .-Dateien etwa .htaccess und .htpasswd schützt der Server durch folgende Standardeinstellung:

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Um alle .-Dateien in einer Verzeichnisstruktur (etwa public_html) zu schützen, schreibt man in die .htaccess einfach:

<Files ~ "^\.">
    Deny from all
</Files>

oder analog

<FilesMatch "^\.">
deny from all
</FilesMatch>

Hinweis: Wenn Sie Ihre Einstellungen testen, denken Sie immer an den Cache-Speicher.

Individuelle Fehlermeldugen

Bei fehlerhaften Aufruf liefert der Server einen entsprechenden Fehlercode und eine Standardmeldung. Diese kann auf den Server durch den Verweis auf ein ErrorDocument geändert werden. Etwa für Seite nicht gefunden

ErrorDocument  404  /missing.html

und den entsprechenden Text in /missing.html

Dies kann der Nutzer über eine .htaccess auch individuell realisieren.
Als Beispiel könnte man für ein geschütztes Verzeichnis /priv, mit einer index.html keine Verzeichnisanzeige, in eine Datei etwa fehler404.html, einen freundlichen Text schreiben.
Für dieses Verzeichnis sind nur berechtigte Anzeigen erlaubt!
Bitte beachten Sie diesen Wunsch und versuchen Sie keinen unerlaubten Zugang.

Die .htacces in /priv könnte dann so aussehen

ErrorDocument 404 /priv/fehler404.html

URL Umleitung

mit Redirect

Falls bekannte Webseiten verschoben werden, kann man die URL weiterleiten. Dies geht auch auf einen anderen Server. Als Beispiel Weiterleitung der Startseite des Servers wwwbs auf neuen Server wwwbs1 durch .htaccess in DocumentRoot.
Inzwischen wurde der AIX-Server stillgelegt und für den Linuxserver wieder der Name wwwbs eingeführt. wwwbs1 ist nur noch ein alias.

Redirect   /index.html   http://wwwbs1.informatik.htw-dresden.de

Oder alle Seiten

Redirect permanent   /   http://wwwbs1.informatik.htw-dresden.de

Die .htaccess kann auch in den entsprechenden Verzeichnis angelegt werden.
Als Beispiel wird auf diesen Server die Struktur /lehre/folien/folien_sys/admin/code/ aus den passwortgeschützen Bereich in den "freien" Bereich /fadmin/code verschoben.
Um die irgendwo vorhandenen Links zu erhalten, wird im alten Verzeichnis eine .htaccess mit

Redirect   /lehre/folien/folien_sys/admin/code/ 
	https://wwwbs.informatik.htw-dresden.de/fadmin/code/

angelegt. Voraussetzung ist, wie oben bereits genannt die Directive AllowOverride ALL.
Die erste Angabe muss ein vollständiger Pfad ab der DocumentRoot und die zweite Angabe, entgegen der Aussagen einiger Autoren, eine vollständige URL sein.

Will man einige Seiten in der alten Stuktur belassen, hier etwa Kopien die nur für die interne Lehre genutzt werden sollen, muss man die Dateien einzeln weiterleiten. Also etwa

Redirect   /lehre/folien/folien_sys/admin/code/index.code.html 
	https://wwwbs.informatik.htw-dresden.de/fadmin/code/index.code.html
Redirect   /lehre/folien/folien_sys/admin/code/utf-8.html 
	https://wwwbs.informatik.htw-dresden.de/fadmin/code/utf-8.html

mit ErrorDocument

Zum Verschieben von Seiten kann man auch das ErrorDocument nutzen.
In obigen Fall für die Seite /lehre/folien/folien_sys/admin/code/index.code.html in der .htaccess etwa

ErrorDocument 404 /fadmin/code/index.code.html

Bei dieser Lösung wird die verschobene Seite aber unter den alten Verzeichnis angezeigt. Eine relative Adressierung, wie sie auf diesem Server wegen der besseren Nutzung von Downloads genutzt wird, ist damit nicht möglich.

mit Meta-Tag Refresh

Der Vollständigkeit halber sei hier betont, dass es noch eine Reihe weiterer Möglichkeiten zum Weiterleiten auf verschobene Seiten gibt. In unserem Fall wäre z.B. eine einfache clientseitige Lösung über eine Meta-Tag Refresh denkbar. Also in die Seite index.code.html im head die Zeile

<meta http-equiv="refresh" 
content="1; URL=http://localhost/fadmin/code/index.code.html">

ergänzen. Wird die "alte" Seite durch einen Client aufgerufen erfolgt eine kurze Anzeige, 1 Sekunde, und danach wird vom Client die "neue" Seite aufgerufen. Der Inhalt der "alten" Seite kann z.B. ein kurzer Hinweis zum Weiterleiten sein.

mit der RewriteEngine

Im Apache gibt es noch eine weitere Lösung zur Umleitung, über die RewriteEngine. Dafür muss der Modul mod_rewrite aktiviert sein. Etwa in /etc/sysconfig/apache2 unter APACHE_MODULES="... rewrite" in die Liste eingetragen.
Will man z.B. für alle Seiten https erzwingen, ohne gleich den Port 80 zu sperren, kann man dies durch folgende .htaccess in der DocumentRoot erreichen:

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

Dies sieht alles etwas mystisch aus und es ist auch so. Es gibt tausend Schreibweisen und keine vernünftige, sprich einfach verständliche, Dokumentation. Die RewriteCond könnte z.B. auch so aussehen:
RewriteCond %{HTTPS} !=on
Oder die RewriteRule nur für bestimmte Verzeichnisse (.htaccess dann in diesem Verzeichnis, hier z.B. Prüfungsseiten, da dort die Eingabe des LDAP-Passwortes gefordert wird.):
RewriteRule ^(.*) https:///%{SERVER_NAME}/lehre/pruefungen/$1 [R,L]

Leider bringt diese Lösung nicht den erhofften Erfolg.
Das LDAP-Passwort wird über http abgefragt und erst dann erfolgt das Umschalten auf https. Auch das verschieben der Rewrite-Anfoderung in das Parentverzeichnis - hier /lehre, etwa
RewriteRule ^pruefungen/(.*) https:///%{SERVER_NAME}/lehre/$1 [R,L]
bingt keinen Erfolg. Jetzt wird das LDAP-Passwort zuerst über http und dann nochmals über https angefordert.
Dies liegt offensichtlich daran, dass die URL vor der Umleitung gelesen wird und dies geht nur über den geforderten Passwortschutz. Siehe Darstellung aus Manual

mod_rewrite_fig1

Redirect und Schutz der Passwortübertragung

Eine Lösung wäre ein Elternverzeichnis zur Umschaltung einzufügen. Im vorliegenden Fall müssten dann aber alle Links (da immer relativ angegeben) in den Seiten unter pruefungen/ überarbeitet werden.
Das beschriebene Problem lässt sich aber einfacher lösen. Man benennt die Verzeichnisstruktur um, etwa spruefungen/, dort liegt dann auch die .htaccess zur LDAP-Authentifizierung.
Im neuen Verzeichnis pruefungen/ erzeugt man dann etwa folgende .htaccess
Redirect /lehre/pruefungen https://wwwbs.informatik.htw-dresden.de/lehre/spruefungen
Das Passwort wird nun wie gewünscht über https angefordert.

khttps.ldap

Weitere Informationen zu den .htaccess files im Manual lokal oder sman.

     ^
<-  |  ->


L. Koch; 27.10.2006
Created with Vim Valid HTML 4.01!