Apache-Verzeichnisse

Arbeitsverzeichnis und spezielle Verzeichnisse

Apache verwendet wie jeder andere Webserver ein 'Arbeitsverzeichnis' für alle verwalteten Standard-Webseiten. Darüber hinaus kann apache auch Dokumente aus anderen Verzeichnissen verwalten - Für besondere Zwecke und mit besonderen Zugriffs-Rechten.
Apache Der weltweit erfolgreichste Standard Webserver (Linux, Windows)
Konfiguration Text-Dateien zur bequemen Einstellung aller Optionen
Neustart Nach Änderung der Konfiguration: Neustart & Test
Zugriffs-Rechte Alles verbieten, manches erlauben
Arbeits-Verzeichnis DocumentRoot für alle gewönlichen Webseiten
CGI-Programme Das Alias /cgi-bin/ führt in ein eigenes Programm-Verzeichnis
Apache-Doku Das Alias /manual führt zum Apache-Manual
HTML-Doku Einbindung von Webseiten-Manuals, z.B. PHP, Perl, SelfHTML, ..
UserDir Öffentliche User Verzeichnisse
Privat Abgeschirmtes Verzeichnis für den Webserver am eigenen PC
Softlink Erweiterung des Web-Verzeichnisses nach Belieben
index.html Webseite oder Umleitung in jedem Verzeichnis
Verwandte Themen Linux Installation, Windows Schnell-Installation,
Windows-Details, Windows Server Werkzeug, MySQL Datenbank Server, Perl (Windows), PHP (Windows)

Konfiguration

Voraussetzung für alle Kapitel dieser Seite:
Der Apache Server ist installiert und konfiguriert.
Der Server ist bereits getestet und läuft einwandfrei.
Sie verfügen über AdministratorInnen-Rechte, sind z.B. auf Linux als root angemeldet.
Für die Beispiele dieser Seite wird angenommen, dass Apache Version 2 oder 2.2 installiert ist.
Details zur Installation des Apache Webservers auf Linux und Windows.

Konfiguration

Der Apache-Server wird mit Hilfe einfacher Text-Dateien konfiguriert, ähnlich wie die meisten auf Linux entstandenen Programme. Alle Optionen sind als lesbarer Text festgelegt und werden einmalig beim Server-Start gelesen.
Die Konfigurations-Dateien können mit jedem Text-Editor geöffnet, kontrolliert und geändert werden. Diese Methode ist einfach, transparent und ausgezeichnet dokumentiert (→ Apache Dokumentation).
Die Konfiguration beginnt mit der Text-Datei httpd.conf
Die weitere Organisation ist leider von System und Version abhängig, jedoch stets gut dokumentiert.
Ausgehend von dieser Datei sind darin Verknüpfungen zu weiteren Dateien angelegt., z.B.
Include /etc/apache2/uid.conf
Der Inhalt der bezeichneten Datei wird so behandelt, als ob er an der betreffenden Stelle als Text eingefügt wäre.
Mit einer Anweisung wie z.B.
Include /etc/apache2/conf.d/*.conf
werden alle Dateien *.conf eingebunden, die sich im Unter-Verzeichnis conf.d befinden.

Jede mit Include eingebundene Datei kann selbst weitere Include-Anweisungen enthalten (z.B. default-server.conf, falls vorhanden).
Diese Methode - Auslagerung von Details in eigene Dateien - hat Vorteile:
IndividuelleÄnderungen und Ergänzungen sind in kleine übersichtliche Dateien ausgelagert. Solche Dateien lassen sich z.B. über das Internet leicht kommunizieren, bei Bedarf ein/aus-schalten, und nach einem Server-Update ganz einfach wieder dazufügen.
Nach Installation sind in der Konfigurations-Datei httpd.conf mehrere Include-Anweisungen enthalten. Manche davon sind vorbereitet, aber mit einem # Kommentar-Zeichen abgeschaltet: Man muss lediglich das # Zeichen entfernen, um die jeweilige Datei bzw. die darin enthaltene spezielle Option zu aktivieren.
Individuelle Ergänzungen werden am besten nach der gleichen Methode vorgenommen.
Auf dieser Seite werden dafür einige Beispiele vorgestellt.
Linux:
Die Konfiguration erfolgt normalerweise im Verzeichnis
/etc/apache2
beginnend mit der Datei httpd.conf
Windows:
Die Konfiguration erfolgt normalerweise im Verzeichnis
C:\Programme\Apache Software Foundation\Apache 2.2\conf
beginnend mit der Datei httpd.conf

Pfade

Für alle Pfade wird in der Apache Konfiguration das Trennzeichen / verwendet.

Auch auf Windows-Systemen wird (innerhalb der Konfigurations-Texte) / als Trennzeichen verwendet.

Webserver-Neustart und Test

Eine Änderung der Konfiguration wird erst beim nächsten Start des Webservers wirksam. Das kann durch einen kompletten System-Neustart erfolgen - rascher und schonender jedoch durch einen Neustart lediglich des Webservers.

Linux:

Am besten wird eine ( → Shell)-Konsole geöffnet und das installierte Script zur Apache-Verwaltung verwendet:
# /etc/init.d/apache2 restart

Windows:

Mehrere Methoden sind möglich, z.B. Befehl Restart am Apache-Monitor im System-Tray.
oder der ServiceController auf der Windows-Konsole (Eingabeaufforderung):
C:\> sc stop apache2.2
C:\> sc start apache2.2

Test

Nach dem Webserver-Neustart testen sie zuerst die Grundfunktion des Webservers, erst danach die speziellen Aspekte der geänderten Konfiguration.

Erster Test am Webserver-PC:
Starten sie einen Browser und geben sie eine dieser beiden äquivalenten Adresszeilen ein: Der Browser sollte die Startseite index.html aus dem → Arbeits-Verzeichnis anzeigen.

Zweiter Test an einem beliebigen anderen PC im Netzwerk:
Starten sie einen Browser und geben sie den Namen oder die IP-Adresse des Servers ein:
http://MeinServer
http://192.168.0.1
Ersetzen sie Name und IP-Adresse durch die Daten ihres Servers (nächster Absatz).

Server-Name und IP-Adresse

Für den Funktions-Test brauchen sie Name und IP-Adresse ihres Server-PC:

Linux (Shell-Konsole):
# export
# env | sort
# ifconfig
# ip addr show
Die Anweisungen export,env geben alle Linux Umgebungs-Variablen aus. Der PC-Name ist je nach System und Version in mehreren Variablen enthalten, z.B. HOST, HOSTNAME, XAUTHLOCALHOSTNAME, ..
Die → IP-Adresse finden sie in der Ausgabe von Befehl ifconfig, ip addr show

Windows (Eingabeaufforderung = cmd.exe):
C:\> set
C:\> ipconfig

Befehl set gibt alle Windows → Umgebungs-Variablen aus. Der PC-Name ist normalerweise in COMPUTERNAME enthalten.
Die → IP-Adresse finden sie in der Ausgabe von Befehl ipconfig
Der Name des Apache-Webservers wird im Zweifel genauso eingestellt wie der PC-Name. Unauffällige Namen sind besser als Hinweise auf die PC-Funktion wie z.B. MeinServer - Sie führen Hacker besonders bequem zu ihrem Ziel. Wenn der Name des Server-PC MeinServer lautet, dann kann die Apache-Konfiguration z.B. diese Anweisung enthalten.

Zugriffs-Rechte

Betriebssystem

Prinzipiell gelten für alle Verzeichnisse jene Zugangsrechte, die am jeweiligen Betriebssystem eingestellt wurden.
Rechte sind immer an User gebunden: Bei Servern sind das speziell angelegte System-Konten, z.B. wwwrun (Linux) oder SYSTEM (Windows) - keine menschlichen AnwenderInnen - Der Server muss unabhängig vom angemeldeten User laufen, auch wenn niemand angemeldet ist.

Das von Windows verwendete System der Zugriffs-Rechte ist so kompliziert, dass es nur von speziell ausgebildeten AdministratorInnen in größeren Organisationen eingesetzt wird. Probieren sie dazu auf Windows den Konsolen-Befehl
C:\> cacls /?
Wenn sie damit klarkommen, dann können sie die Zugangsrechte zum Arbeits-Verzeichnis einstellen . .

In modernen Betriebssystemen sind die Zugriffsrechte für Verzeichnisse (Ordner) klar und einfach einstellbar. Nach Installation sind die Rechte bereits funktionsfähig konfiguriert.
Der Server-User braucht auf das Apache Programm-Verzeichnis mindestens die Rechte read+execute, auf manche Verzeichnisse (z.B. Log) auch write
EntwicklerInnen brauchen vollen Zugriff auf das gesamte Arbeits-Verzeichnis (Webseiten, Bilder, ..), meist in Form von → FTP oder Fileservice (→ Samba).
Der Server-User braucht auf das Arbeits-Verzeichnis mindestens das Recht read
Auf dynamische Webseiten (*.pl, *.php, ..) braucht der Server zusätzlich das Recht execute
Auf ein Upload-Verzeichnis braucht der Server das Recht write
In einem Upload-Verzeichnis sollten sich zur Sicherheit keine anderen Dateien befinden, (z.B. Webseiten. Grafik-Dateien, ...)
Wenn sie zusätzliche Verzeichnisse am Webserver verwalten wollen (Beispiele dieser Seite), dann müssen sie dafür sinnvolle Rechte vergeben.
Erteilen sie nach Möglichkeit nur so viele Rechte wie unbedingt notwendig, keinesfalls z.B. unbeschränkte Rechte für Gäste oder alle User.

Apache Zugangs-Regelung

Unabhängig vom Dateisystem verfügt der Apache Server über ein eigenes System zur Regelung der Zugangsrechte. Damit können die Rechte des Dateisystems nicht ausgeweitet, sondern nur zusätzlich eingeschränkt werden.
Das ist insbesondere auf Windows unumgänglich: Der User SYSTEM hat zu viele Rechte für einen Webserver, dieser kann daher zum Sicherheits-Risiko werden. Außerdem wird das komplizierte System der Windows-Zugriffsrechte nur selten (richtig) angewendet und muss daher durch ein eigenes System ergänzt werden.

Die empfohlene Apache Server-Politik ist normalerweise nach Installation bereits eingestellt:
Alles verbieten, was nicht ausdrücklich erlaubt ist !
.htaccess
Apache bietet die Möglichkeit, jede Konfigurations-Anweisung zur Ausführungszeit (d.h. Live, ohne Restart) in speziellen Text-Dateien zu ändern.
In der Konfigurations-Datei ist normalerweise dieser Block von Anweisungen enthalten:
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
Der Name der Live Konfigurations-Dateien wird mit .htaccess festgelegt (andere Namen sind möglich). Außerdem wird zur Sicherheit angeordnet, für User (Web-BesucherInnen) keine Datei anzuzeigen, deren Name mit .ht* beginnt. Auch andere heikle Daten werden daher in Dateien wie .htpassword untergebracht. Damit ist die Konfiguration mit .htaccess vorbereitet, jedoch noch nicht erlaubt.

Die Anweisung AllowOverride erlaubt die nächträgliche Konfiguration mit .htaccess Dateien für ein bestimmtes angegebenes Verzeichnis und alle seine Unter-Verzeichnisse.
Beispiel:
<Directory "/srv/www/htdocs/test">
AllowOverride All
</Directory>
Häufig verwendete Werte sind
AllowOverride None
AllowOverride AuthConfig
AllowOverride FileInfo
AllowOverride All
Damit werden u.a. folgende Konfigurations-Änderungen erlaubt: Keine, Zutritt nur mit Anmeldung, eigene → Fehler-Seiten, alle Änderungen (Vorsicht !).
Die Änderung der Konfiguration tritt erst dann (Live !) in Kraft, wenn ein Browser eine Datei des betreffenden Verzeichnisses anfordert.
Mit Anweisung Satisfy können bestimmte User (definiert durch ihre Client IP-Adresse) unterschiedlich behandelt werden, z.B. von einer Zugangs-Beschränkung oder obligaten Anmeldung ausgenommen werden.

Wenn Apache in einem beliebigen Verzeichnis eine Datei mit dem Namen .htaccess findet, dann wird sie wie eine Konfigurations-Datei gelesen und regelt den Zugang zu diesem speziellen Verzeichnis. Beachten sie den Punkt als erstes Zeichen des Datei-Namens - Damit wird die Datei im Dateisystem 'versteckt'.
So werden auf der → Shell-Konsole alle (auch versteckte) Dateien angezeigt:
# ls -l
(Der Befehl beginnt mit einem kleinen L, nicht mit der Zahl 1)
Windows hat Probleme mit Dateien dieses Namens. Erzeugen sie eine Text-Datei htaccess.txt und ändern sie den Namen an der Windows-Konsole (Eingabeaufforderung):
C:\> rename htaccess.txt .htaccess
Auch danach lässt sich Datei problemlos mit dem Editor notepad.exe öffnen.

SelfHTML: Zugriffs-Kontrolle mit htaccess (de)

Firewall

Auf allen modernen Servern und PC ist Firewall-Software installiert. Damit wird u.a. der Zugriff auf Webserver kontrolliert - auch am eigenen PC (ohne Netzwerk).

Die Verbindung zwischen Browser und Webserver kann auf beiden Seiten blockiert werden, d.h. sowohl durch den Firewall des Clients als auch durch jenen des Servers.

Konfigurieren sie die Firewall-Software so, dass von jedem PC ihres lokalen Netzwerks (LAN) eine Anfrage an → Port 80 ihres Server-PC gesendet und dort auch empfangen werden darf.
Wenn der Webserver nach ihrer Meinung richtig installiert ist und läuft, jedoch selbst am eigenen PC keine Verbindung möglich ist:
Unterbrechen sie die Verbindung zum globalen Internet. Danach können sie beide (!) Firewalls kurzfristig abschalten und die Kommunikation zwischen Client und Server ohne Behinderung testen.

Geltungsbereich

Viele der hier vorgestellten Anweisungen gelten ausdrücklich nur für ein bestimmtes Verzeichnis (und alle seine Unter-Verzeichnisse). Dazu bietet Apache zwei grundsätzlich verschiedene Möglichkeiten:

In der Grund-Konfiguration (Datei httpd.conf und alle ihre Includes ) werden alle für ein Verzeichnis zutreffenden Anweisungen in je einen <Directory>-Block eingeschlossen. Diese Konfiguration wird einmalig bei Start und Restart des Webservers angewendet.
Details dazu im Kapitel <Directory> dieser Seite.

Unabhängig davon kann man Anweisungen in eine spezielle Text-Datei (.htaccess) eintragen. Sie gelten für jenes Verzeichnis, in welchem die Datei enthalten ist und für seine Unter-Verzeichnisse. Diese Konfiguration wird immer dann angewendet, wenn von einem Browser eine Datei aus dem betreffenden Verzeichnis angefordert wird.
Details dazu im Kapitel .htaccess dieser Seite.

Strategie

Es ist sinnvoll, möglichst viele Anweisungen in der Grund-Konfiguration festzulegen. Diese ist jedoch nur für die/den AdministratorIn zugänglich.

Die Konfiguration mit .htaccess Dateien erfordert mehr Aufwand, ist jedoch ohne Zugriffs-Rechte auf die Grund-Konfiguration möglich. Sie wird daher angewendet:
Von allen KundInnen eines Web-Providers zur Konfiguration des eigenen Web-Bereichs.
Von allen (Power)-Usern eines größeren lokalen Netzwerks zur Konfiguration des eigenen Web-Bereichs.

Vererbung

Die Konfiguration eines Verzeichnisses wird automatisch auf alle darin enthaltenen Unter-Verzeichnisse vererbt. Das spart viel Arbeit, denn die Konfiguration muss nur für jene Sub-Verzeichnisse erneut festgelegt werden, deren Eigenschaften sich von ihrem übergeordneten parent-Verzeichnis unterscheiden sollen.

Man organisiert die Konfiguration daher stets top-down, d.h. ausgehend vom Ursprung des Dateisystems (Arbeitsplatz, Fetsplatte) zu immer kleineren Einheiten (Dokumente-Verzeichnis des Webservers, Detail-Verzeichnisse).

<Directory>

Die "Auszeichnung" <Directory></Directory> definiert einen Block von Konfigurations-Anweisungen, die auf ein bestimmtes Verzeichnis und alle seine Unter-Verzeichnisse angewendet werden. Der Pfad zum jeweiligen Verzeichnis wird wie ein unbenanntes Attribut angegeben. Wenn darin Leerzeichen enthalten sind, dann muss man den Pfad in "" einschließen. Die Pfad-Angabe kann absolut, relativ oder mit Hilfe von Alias erfolgen.
Ein absoluter Pfad orientiert sich am jeweiligen Datei-System, z.B. (Linux, Windows):
"/srv/www/htdocs/verzeichnis"
"C:/Web/htdocs/verzeichnis"
Auch für Windows-Pfade kann ein / als Pfad-Separator verwendet werden.
Beispiel:
<Directory "/srv/www/htdocs">
...
</Directory>

Ein relativer Pfad orientiert sich an jenem Verzeichnis, welches in der Konfigurations-Variablen ServerRoot angegeben wurde. Relative Pfade eignen sich daher zur Beschreibung innerhalb des Apache Programm-Verzeichnisses, nicht jedoch für Webseiten, die in einem anderen Pfad liegen sollten !
Alias und ScriptAlias sind Namen für Texte (Strings). In den meisten Fällen wird ein Alias stellvertretend für einen absoluten Pfad verwendet. Bei jeder Verwendung wird der Name des Alias durch den entsprechenden Text (Pfad) ersetzt. Das schafft mehr Übersicht und gibt die Möglichkeit, durch einfache Änderung eines Alias-Pfad-Textes viele komplexe Anweisungen an einen anderen Pfad zu legen.
Beispiel:
ScriptAlias /cgi-bin/ "srv/www/cgi-bin"
<Directory /cgi-bin/>
...
</Directory>
Hier wird ein Alias mit dem Namen /cgi-bin/ angelegt. Achtung - die beiden / Zeichen sind Bestandteil des Namens !
Das Alias steht für den angegebenen Text (Pfad).

Zuerst alles verbieten

In der Konfigurations-Datei wird zunächst der Zugang zum gesamten Dateisystem (bezeichnet durch ein einzelnes / Zeichen) verboten:
<Directory />
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Dieser Anweisungs-Block befindet sich in der Konfiguration vor allen anderen Regelungen der Zugriffsrechte.
Damit wird zunächst einmal alles verboten.
Die Anweisung Options schaltet alle möglichen Optionen ab.
Mit Anweisung AllowOverride wird die spätere Änderung der Konfiguration durch .htaccess Dateien (nächster Absatz) verboten.
Mit Deny wird der Zugriff aller User auf alle Verzeichnisse verboten.

Danach manches erlauben

Später wird durch andere Anweisungen der Zugang zu einzelnen, genau bezeichneten Verzeichnissen freigegeben, z.B. wird das Standard Dokumente-Verzeichnis (Linux) freigegeben:
<Directory "/srv/www/htdocs">
Order allow,deny
Allow from All
</Directory>
Das Wort All bezeichnet alle BesucherInnen des Webservers und hat keinen Bezug zu Usern des Betriebssystems.
Ein solcher Block von Anweisungen wird für jedes Verzeichnis eingerichtet, welches vom Webserver verwaltet werden soll. Auf diese Weise können verschiedene Verzeichnisse mit unterschiedlichen Zugriffsrechten angelegt werden. Beispiele dazu auf dieser Seite.
Die Anweisung bezieht sich auf alle Unter-Verzeichnisse und Dateien innerhalb des eingetragenen Pfades, wenn nichts anderes angegeben wurde.

Allow & Deny from ...

Diese beiden Anweisungen erlauben oder verbieten das jeweilige Verzeichnis für die bezeichnete Gruppe von BesucherInnen. Die betroffenen BesucherInnen werden durch ihre jeweilige → IP-Adresse bestimmt, nicht durch User-Einstellungen des Betriebssystems !

Eine vorangestellte Anweisung Order bestimmt die Reihenfolge, in welcher Allow und Deny verarbeitet werden.

Öffentliches Web
Allow from All
erlaubt den Zugang für alle BesucherInnen. Diese Anweisung wird für das Dokumente-Verzeichnis (alle Webseiten, Bilder und andere Web-Dateien) verwendet, wenn das betreffende Web öffentlich (im Internet) zugänglich ist.
Für Webserver im eigenen Netzwerk oder am eigenen PC ist diese Anweisung nur mit Vorsicht zu verwenden: Sie ist nur für jene Verzeichnisse sinnvoll, die tatsächlich für alle BesucherInnen öffentlich zugänglich sein sollen.

Nur für PC des eigenen LAN
So wird der Zugang (nur) für alle PC des eigenen lokalen Netzwerks (LAN) freigegeben:
Allow from 192.168.0.0/255.255.255.0
In diesem Fall wird zuerst die Basis-Adresse des LAN angegeben, danach die Maske. Informieren sie sich über ihre Netzwerk-Konfiguration, die vermutlich andere Daten erfordert als im Beispiel angeführt.
Faustregel (ohne Gewähr !): Tragen sie die ersten 3 Ziffern aus der IP-Adresse des Servers ein (hier 192.168.0), danach eine Null und die angegebene Maske.

Nur für den eigenen PC
Diese Einstellung ist nur für Webserver am eigenen Arbeits-PC sinnvoll:
Allow from 192.168.0.12
Ersetzen sie die Daten durch die IP-Adresse ihres eigenen PC. Damit werden private Verzeichnisse gegen alle anderen BesucherInnen abgeriegelt. Umgekehrt können sie in solchen Verzeichnissen großzügige Rechte für sich selbst einräumen.

Dokumente-Verzeichnis   DocumentRoot

In der Apache Konfiguration muss ein Standard Dokumente-Verzeichnis festgelegt werden. Die Anweisung DocumentRoot definiert jenes Verzeichnis, in dem alle gewöhnlichen Webseiten enthalten sind, z.B. die Start-Seite (Homepage) index.html

Suchen sie zuerst jene Konfigurations-Datei, in welcher DocumentRoot festgelegt wird. Beginnen sie die Suche in httpd.conf und folgen sie jeder angetroffenen Include-Anweisung.

Typische Einstellung nach Installation (Linux, Windows):
DocumentRoot "/srv/www/htdocs"
DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs"
Das Dokumente-Verzeichnis sollte sich außerhalb (!) des Apache Programm-Verzeichnisses befinden.
Programm und Daten sollten sauber getrennt werden.
Bei einem Server-Update besteht Gefahr, dass Webseiten innerhalb des Apache-Verzeichnisses gelöscht werden.
In → Linux-Distributionen ist das Dokumente-Verzeichnis meistens sinnvoll eingestellt.
In → Windows-Installationen sollte das Dokumente-Verzeichnis geändert werden, wenn es sich innerhalb des Apache-Verzeichnisses befindet - Das trifft derzeit nach Neu-Installation auf Windows zu !
Ändern sie die Apache Konfiguration nur dann, wenn der Webserver einwandfrei funktioniert !
Ändern sie immer nur möglichst wenige Anweisungen und testen sie die Funktion vor weiteren Änderungen !

Änderung des (Windows) Dokumente-Verzeichnis:

Richten sie ein neues Dokumente-Verzeichnis ein, hinterlassen sie jedoch das alte Verzeichnis in funktionsfähigem Zustand !
Erstellen sie ein neues Arbeits-Verzeichnis, z.B.
C:\Web\htdocs
Wenn ihr Dokumente-Verzeichnis noch keine eigenen Webseiten enthält, dann kopieren sie die Datei index.html aus dem alten in ihr neues Dokumente-Verzeichnis. Tragen sie mit einem Web-Editor in beide Start-Dateien einen Hinweis-Text zur Unterscheidung ein, z.B. 'Original-Start' und 'Web Start'.

Wenn sich im Original-Verzeichnis bereits ihr gesamtes Web befindet, dann verschieben sie alle Dateien in das neue Arbeits-Verzeichnis. Hinterlassen sie im Original-Verzeichnis eine Minimal-Webseite index.html mit einem entsprechenden Hinweis.
Löschen sie niemals ! das Original-Verzeichnis oder die Start-Datei
C:\Programme\Apache Software Foundation\Apache 2.2\htdocs\index.html
Danach wird die Änderung der Konfiguration durchgeführt (nächster Absatz DocumentRoot).

Änderung von DocumentRoot

Die Original-Konfiguration wird nicht gelöscht oder überschrieben, sondern mit # Zeichen abgeschaltet. In ein paar erklärenden Worten können sie auch nach Monaten noch nachlesen, was geändert wurde.
Ersetzen sie Kennwort durch ihren Namen: So finden sie alle geänderten Stellen rasch mit der Such-Funktion jedes Text-Editors.
Änderung des Arbeits-Verzeichnisses in der Apache Konfigurations-Datei auf Windows:
### Kennwort ###
# Original:
# DocumentRoot "C:/Programme/Apache Software Foundation/Apache2.2/htdocs"
# Änderung:
DocumentRoot "C:/Web/htdocs"
### Ende der Änderung

Änderung des <Directory>-Blocks

Unmittelbar auf die DocumentRoot Anweisung (Absatz oberhalb) folgt normalerweise ein <Directory>-Block, in dem der Zugang zum Standard Arbeits-Verzeichnis erlaubt wird.
Der in der ersten Zeile angegebene Pfad muss genau (!) jenem Pfad entsprechen, der in der Anweisung DocumentRoot festgelegt wurde.
Im Original ist der Zugang meist für alle BesucherInnen des Webs freigegeben. Das ist nur bei einem Webserver im globalen Internet notwendig.
Wenn sie einen Webserver im lokalen Netzwerk (LAN) oder am eigenen PC betreiben, dann sollten sie den Zugang nur für BesucherInnen aus dem eigenen LAN erlauben: Ersetzen sie die IP-Adresse 192.168.0.0 des Beispiels durch die Basis-Adresse ihres eigenen Netzwerks.
Details zu den einzelnen Optionen finden sie in der → Apache-Dokumentation am eigenen Webserver.
Details zur Verwendung von IP-Adressen und Masken.
Einstellung der Zugangs-Rechte für das Standard Arbeits-Verzeichnis:
<Directory "C:/Web/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
# Allow from all
Allow from 192.168.0.0/255.255.255.0
</Directory>

Die → IP-Adresse ihres PC erfahren sie mit den Befehlen (Linux, Windows)
# ifconfig
# ip addr show
C:\> ipconfig
Verwenden sie im Zweifel für die Basis-Adresse die ersten 3 Zahlen der angezeigten IP-Adresse (inet addr,IP-Adresse) und ersetzen sie die letzte durch 0.

Neustart und Test

Nach dem Neustart des Servers testen sie das geänderte Dokumente-Verzeichnis.
Öffnen sie die Startseite keinesfalls mit Doppelklick sondern durch Eingabe der Web-Adresse, z.B. Details im Kapitel Neustart & Test dieser Seite.

Achtung - Wenn ihr Dokumente-Verzeichnis nur die Original-Startseite index.html enthält, dann können sie im Browser nicht unterscheiden, aus welchem Verzeichnis sie stammt. Ändern sie den Text der beiden Dateien (im Original- und neuen Dokumente-Verzeichnis) mit einem Text-Editor !

Web-Editor

Stellen sie ihr Web-Editor Programm auf das Arbeits-Verzeichnis ein.
Testen sie (Beispiel rechts), ob die Zusammenarbeit zwischen Web-Editor, Webserver und Browser funktioniert.
Tipp:
Moderne Browser wie Firefox reagieren automatisch auf Änderungen und laden die betreffende Webseite erneut.
Veraltete Browser wie M$IE müssen mit einem leicht zu findenden Befehl zum Nachladen gezwungen werden: Menübefehl Extras | Internetoptionen | Allgemein | Temporäre Internetdateien | Dateien löschen | Offlineinhalte löschen | OK

Test der Zusammenarbeit WebEditor - WebServer - Browser:
Öffnen sie mit dem WebEditor eine Webseite, z.B. index.html und tragen sie einen Probetext ein.
Speichern sie das Dokument.
Öffnen sie die geänderte Webseite mit einem Browser - nicht mit einem Menübefehl des Web-Editors oder mit Befehl Datei öffnen des Browsers, sondern mit Prefix http:// und Name bzw. IP-Adresse ihres Webservers in der Browser-Adresszeile.

Anwendung

Stellen sie die Startseite aller verwendeten Browser auf die http:// Adresse ihres Servers ein:

Diese Homepage wird blitzschnell geladen, und zwar auch dann, wenn der Zugang zum Internet gerade langsam oder überhaupt blockiert ist.

Homepage

Organisieren sie auf ihrer Homepage index.html alle wichtigen Links. Das ist wesentlich übersichtlicher als die starre hierarchische Ordnung im Menü Favoriten (Lesezeichen, Bookmarks).
Legen sie im Laufe der Zeit weitere Webseiten zu speziellen Themen an: Dort organisiert man Informationen und Links zu speziellen Themen.
Ordnen sie die Elemente nach zusammengehörenden Begriffen, verwenden sie ein übersichtliches Layout, Leitfarben, Bilder etc.
Einige Links werden zu mehreren Themen passen, viele können durch Icons ergänzt werden. Diese Methode (Spinnen-Netz) ist weitaus effizienter als die Verwendung von Favoriten (hierarchischer Baum).

Integrieren sie wichtige Dokumente in ihr Web, z.B. die Apache-Doku und andere HTML-Manuals (Beispiele dieser Seite).
Installieren sie später auch Server-Lösungen, die mit dynamischen Webseiten (z.B. Perl, PHP, ..) arbeiten. Solche Lösungen können sie meist kostenlos aus dem Internet beziehen, z.B. das populäre Paket → phpMyAdmin zur Verwaltung eines eigenen Datenbank-Servers.

CGI-Verzeichnis

Dynamische Webseiten

sind nicht als gleichbleibende Dateien im Arbeits-Verzeichnis des Webservers angelegt, sondern sie werden durch Programme nach Bedarf erzeugt.
Auf diese Weise ist es möglich, für jede Anfrage eine individuell gestaltete Webseite herzustellen.
Ein typisches Beispiel sind die Antwort-Seiten von Suchmaschinen: Da fast jede Anfrage anders lautet, wäre es unmöglich, dafür eine ungeheure Anzahl einzelner spezialisierter Antwort-Webseiten herzustellen und zu speichern.
In der Praxis wird die Anfrage an ein Programm (PHP, Perl, C++ ..) weitergeleitet. Dieses sucht in einer Datenbank nach Treffern und verpackt die Ergebnisse in eine Antwort-Webseite. Diese Seite wird nicht einmal als Datei gespeichert, sondern nur als HTML-Quelltext an den anfragenden Browser gesendet.

Dynamische Webseiten werden am Server-PC von Programmen erzeugt. Programme stellen ein erheblich größeres Risiko dar: Wenn es einem Angreifer gelingt, eines dieser Programme zu manipulieren oder ein eigenes Programm auf den Server hochzuladen, dann hat er im schlimmsten Fall Zugriff auf den gesamten Webserver.

Eine einfache aber wirksame Methode ist es, Webserver-Programme ( → CGI-Programme) in einem eigenen, besonders geschützten Verzeichnis aufzubewahren. Eine derartige Konstruktion ist in jeder Standard-Installation von Apache bereits enthalten.

In diesem Web finden sie zahlreiche Beispiele dynamischer Webseiten, sowie einige Seiten zur Erzeugung solcher Server-Programme (→ Perl, → PHP, → C++).

Voraussetzung:

Die Erstellung oder Änderung eines CGI-Verzeichnisses macht nur dann Sinn, wenn sie → CGI-Programme überhaupt ausführen können.
Das ist allerdings empfehlenswert, mindestens zu einem späteren Zeitpunkt: Sie können dann unzählige fertige Lösungs-Pakete nutzen, die im Internet meist kostenlos angeboten werden.

Typische Beispiele:
Die Programmiersprache → Perl ist installiert, Apache ist dafür konfiguriert, und im CGI-Verzeichnis befindet sich ein funktionierendes Perl-Programm, z.B. test.pl
Oder: Die Programmiersprache → PHP ist installiert, Apache ist dafür konfiguriert, und im CGI-Verzeichnis befindet sich ein funktionierendes PHP-Programm, z.B. test.php

Oder: Im CGI-Verzeichnis befindet sich ein funktionierendes ausführbares Programm (Linux-binary bzw. Windows *.exe). Normalerweise werden derartige Programme mit C++ am gleichen PC hergestellt, dabei müssen die Regeln zur Erstellung von → CGI-Programmen beachtet werden.

In jedem Fall muss mindestens ein funktionsfähiges Test-Programm vorhanden sein. - Sonst können sie zwar ein CGI-Verzeichnis konfigurieren, jedoch nicht testen

Details zu CGI-Programmen

ScriptAlias

Ein Alias ist ein Name für einen Text.
Syntax: Auf das Befehlswort ScriptAlias folgt zuerst der Name, danach der durch den Namen symbolisierte Text in " ".
Bei jeder folgenden Anwendung des Namens wird an seiner Stelle der Text eingesetzt.
Allerdings ist der hier gewählte Name ungewohnt: Er lautet /cgi-bin/ und muss genauso verwendet werden, d.h. die beiden / sind Bestandteile des Namens !

Linux:
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
Windows:
# ScriptAlias /cgi-bin/ "C:/Programme/Apache Software Foundation/Apache2.2/cgi-bin/"
ScriptAlias /cgi-bin/ "C:/Web/cgi-bin/"
Wie alle anderen Webseiten sollte sich auch das CGI-Verzeichnis außerhalb des Apache Programm-Verzeichnisses befinden - In diesem Fall auch außerhalb des Arbeits-Verzeichnisses !

<Directory>

Die Zugriffsrechte zum Verzeichnis der CGI-Programme werden ebenso wie für das Standard Arbeits-Verzeichnis in einem eigenen Anweisungs-Block eingestellt.
Ein derartiger Block folgt in der Konfiguration normalerweise unmittelbar auf jede Alias-Anweisung.
Der angegebene Pfad muss genau dem Pfad in der Anweisung ScriptAlias entsprechen.
Einstellung der Zugangs-Rechte für das CGI-Verzeichnis:
<Directory "C:/Web/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
# Allow from all
Allow from 192.168.0.0/255.255.255.0
</Directory>
Ersetzen sie die hier verwendete Adresse (192.168.0.0) durch die Basis-Adresse ihres eigenen Netzwerks. Details zu den einzelnen Optionen finden sie in der Apache-Dokumentation.

Neustart und Test

Nach dem Neustart des Servers können sie das CGI-Verzeichnis testen. Dazu muss sich mindestens ein CGI-Programm darin befinden.
Meist wird bereits bei Installation ein einfaches Perl-Programm printenv.pl mitgeliefert.
Nur dann, wenn Perl am gleichen PC installiert ist, und wenn Apache dafür konfiguriert ist, können sie dieses Programm auch verwenden.

Öffnen sie am Server-PC einen Browser und geben sie in die Adresszeile ein:
http://localhost/cgi-bin/printenv.pl
Wenn der Test funktioniert, dann wiederholen sie ihn von eienm anderen PC, mit Angabe von Server-Name oder IP-Adresse:
http://192.168.0.1/cgi-bin/printenv.pl
(Ersetzen sie die Adresse durch dir reale IP-Adresse ihres Webserver-PC)

Beispiele für CGI-Programme finden sie in den Kapiteln CGI, Perl, PHP
Details im Kapitel Neustart & Test dieser Seite.

Anwendung

Das Script-Alias kann man z.B. in HTML Hyperlinks einsetzen: Der Name /cgi-bin/ wird vom Server erkannt und interpretiert: Das entsprechende Programm (hier test.pl ) wird ausgeführt, unabhängig davon, in welchem Pfad sich die Webseite mit dem Link befindet.
Ein Script-Alias kann auch direkt in eine Browser-Adresszeile eingetragen werden. In beiden Fällen wird das (Perl)-Programm test.pl gestartet, dieses erzeugt live eine Webseite, der Webserver sendet sie an den Browser.

Browser-Adresszeile:
http://192.168.0.1/cgi-bin/test.pl
(Ersetzen sie die Adresse durch dir reale IP-Adresse ihres Webserver-PC)

HTML-Link
<a href="/cgi-bin/test.pl">CGI-Programm</a>

Apache - Dokumentation

Die Apache-Dokumentation wird normalerweise bei Installation angelegt. Sie befindet sich in Form von Webseiten meist im Apache Unter-Verzeichnis /manual
Die Einbindung der Doku ist in der Konfiguration meist als Option vollständig angelegt, jedoch abgeschaltet.
Auf Webservern im eigenen lokalen Netzwerk (LAN) oder am eigenen PC sollte diese Option unbedingt aktiviert werden. Sie erhalten damit z.B. wertvolle Informationen zu allen Themen dieser Webseite !
Auf Servern im Internet ist sie natürlich abgeschaltet - Dort verwendet man ohnehin die Doku auf der Apache-Homepage.

Include-Anweisung

Die Einbindung der Apache-Doku ist eine Option und gehört daher nicht in die Standard-Konfiguration. Alle zu dieser Option gehörenden Anweisungen sind in eine eigene Datei ausgelagert.
In der zentralen Konfigurations-Datei sorgt eine Include-Anweisung für die Einbindung der Apache Doku-Datei. Mehrere Fälle sind möglich:

In dieser Version (aus einer Linux-Installation) werden alle Dateien *.conf im Unter-Verzeichnis conf.d eingebunden:
Include /etc/apache2/conf.d/*.conf
Die zentrale Konfiguration bleibt in diesem Fall stets unverändert: Eine Option wird aktiviert, wenn man die betreffende Datei in das Verzeichnis conf.d stellt, und abgeschaltet, wenn man sie daraus entfernt.
Die Apache-Doku sollte dort bereits vorhanden sein, z.B. als Datei apache2-manual.conf

In einer anderen Version (aus einer Windows-Installation) wird die Datei httpd-manual.conf im Unter-Verzeichnis extra eingebunden.
Include conf/extra/httpd-manual.conf
Die zentrale Konfiguration enthält je eine Include-Anweisung für jede einzelne Option.
Eine Option wird eingeschaltet, wenn das vorangestellte # Zeichen entfernt wird, bzw. abgeschaltet, wenn man # vornastellt.
In diesem Fall bleiben alle Dateien *.conf in ihrem Verzeichnis (z.B. extra ).

Es ist möglich, beide vorgestellten Versionen miteinander zu kombinieren. Davon wird jedoch abgeraten, weil das unübersichtlich werden kann.

Individuelle Konfiguration

Alle Anweisungen zur Einbindung der Apache-Doku sind in einer eigenen Datei (gekürztes Muster rechts) enthalten. Diese und alle anderen Dateien zur individuellen Konfiguration werden durch Include-Anweisungen (Absatz oberhalb) in die zentrale Konfiguration eingebunden.

Alias
Für jedes von Apache zu verwaltende Verzeichnis wird ein Alias-Name angelegt - hier für den Namen /manual
In der speziellen Form AliasMatch wird für den Namen ein → Regulärer Ausdruck verwendet, der es ermöglicht, individuelle Webseiten in der Sprache der/des jeweiligen BesucherIn zu verwalten.

Directory
Anschließend werden die Zugriffsrechte für das Verzeichnis eingestellt. An Stelle der Anweisung Allow from all beschränken sie den Zugriff besser auf Anfragen aus ihrem eigenen Netzwerk (Kapitel → DocumentRoot).
Individuelle Konfiguration (Linux, gekürzt)
AliasMatch ^/manual(?:/(?:de|en|fr))?(/.*)?$ "/usr/share/apache2/manual$1"
<Directory "/usr/share/apache2/manual">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
. . .
</Directory>
Windows (gekürzt):
AliasMatch ^/manual(?:/(?:de|en|fr))?(/.*)?$ "C:/Programme/Apache Software Foundation/Apache2.2/manual$1"

<Directory "C:/Programme/Apache Software Foundation/Apache2.2/manual">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
. . .
</Directory>
Sie können den BesucherInnen ihres Webs ebenfalls Webseiten in mehreren Sprachen anbieten.
Jede Webseite muss dann in mehreren Versionen vorliegen, z.B. die Standard-Version index.html, dazu die Sprach-Versionen index.html.de, index.html.en, index.html.fr usw.
  Deutsch   Englisch   Französisch  
Ihre Web-BesucherInnen können dann wahlweise die Standard-Webseite oder eine Seite in ihrer bevorzugten Sprache anfordern, z.B. durch Klick auf eines der bekannten Sprach-Icons.
Studieren sie dazu die ungekürzte Konfigurations-Datei ihrer eigenen Apache-Version.

Neustart und Test

Nach dem Neustart des Servers können sie die Funktion testen.
Am Webserver-PC verwenden sie den Namen localhost, auf anderen PC im lokalen Netzwerk Name oder IP-Adresse: des Server-PC.
Browser-Adresszeilen (hier für einen Webserver am eigenen PC)
http://localhost/manual
http://localhost/manual/en
http://localhost/manual/fr

Details im Kapitel Neustart & Test dieser Seite.

Anwendung:

Der Alias-Name manual wird vom Webserver erkannt, eine angeforderte Webseite wird im Verzeichnis der Apache-Doku gesucht. Im ersten Beispiel rechts wird keine Webseite angegeben, daher wird im betreffenden Verzeichnis eine Standard-Seite index.html gesucht und an den Browser zurückgesendet. Im zweiten Beispiel wird eine bestimmte Webseite in verschiedenen Sprachen angefordert.

Das Beispiel zeigt, wie der Mechanismus funktioniert:
Der → Reguläre Ausdruck aus der Konfiguration analysiert den Text nach dem Namen /manual, der Server sendet bei einem Treffer die entsprechende Sprach-Seite.

HTML-Link zur Homepage der Dokumentation
<a href="manual/">Apache-Doku</a>
<a href="manual/en">(englisch)</a>
<a href="manual/fr">(französisch)</a>
Anforderung einer bestimmten Webseite:
<a href="manual/configuring.html">
Konfiguration</a>
<a href="manual/en/configuring.html">
(englisch)</a>
<a href="manual/fr/configuring.html">
(französisch)</a>

Webseiten - Dokumentation (z.B. SelfHTML, Perl, PHP, ..)

Viele Software-Pakete, Programmiersprachen, etc. bieten umfangreiche Dokumentation in Form von Webseiten an.

Es ist sehr empfehlenswert, wichtige Dokumentationen am eigenen PC / Webserver zu laden:
Der Zugriff ist wesentlich rascher, verbraucht kein Download-Volumen und funktioniert auch dann, wenn die Verbindung mit dem Internet gerade langsam oder blockiert ist.
Beispiele für EntwicklerInnen: Doku zu Java, Perl, PHP, SelfHTML, ...

Weniger angenehm ist System-spezifische Dokumentation: Linux verwendet traditionell man- und info-Seiten, Windows sein eigenes Help-System.
Wenn man die Wahl hat, werden Webseiten bevorzugt: Eine einzige Doku wird für das gesamte lokale Netz benutzt, und man kann auf eigenen Webseiten genau passende Links dorthin anbringen.
Man könnte jedes Doku-Verzeichnis in das Arbeits-Verzeichnis des Webservers kopieren oder verschieben und einen Link dorthin legen: So könnte ihr eigener Webserver die Doku verwalten.
Diese Variante wird nicht empfohlen: Es ist oft nicht ratsam, ein Doku-Verzeichnis an einen anderen Pfad zu verschieben (z.B. Perl). Andererseits verbraucht eine komplette Kopie unnötig viel Speicherplatz.

Empfehlung:
Lassen sie die Doku an ihrem Original-Pfad. Ergänzen sie dafür die Apache-Konfiguration so, dass die Doku von ihrem Webserver verwaltet wird.

Beispiel Perl-Doku

Die Perl-Dokumentation ist auf Windows im Unter-Verzeichnis html der Perl-Installation enthalten. Perl legt darin die Doku für jedes Perl-Modul an, das sie zusätzlich installieren - allerdings nur wenn sich die Doku noch an ihrem Platz befindet. Deshalb sollte man die Doku keinesfalls aus dem Perl-Verzeichnis an eine andere Stelle verschieben !

Auf Linux ist die Perl-Doku meist als man-Seiten auf mehrere Unter-Verzeichnisse von /usr/share/doc/packages verteilt. Auch auf Linux ist es vorteilhaft, das HTML-Manual zusätzlich zu laden und am Webserver zu verwalten.

Konfigurations-Datei

Legen sie im Apache Konfigurations-Verzeichnis eine Text-Datei an, z.B. perl_manual.conf
Die Verzeichnis-Struktur der Konfiguration ist leider abhängig von System und Version. Suchen sie nach jenem Verzeichnis, in dem sich auch andere individuelle Dateien *.conf befinden, z.B.
/etc/apache2/conf.d
C:\Programme\Apache Software Foundation\ Apache2.2\conf\extra

Ändern sie den Beispiel-Text (Verzeichnis-Pfad und Basis-Adresse) und tragen sie den Text in die Datei ein.
Inhalt der Text-Datei perl_manual.conf
# Verwaltung der Perl-Doku
Alias /perldoku "C:/Programme/Perl/html"
<Directory "C:/Programme/perl/html">
Order allow,deny
Allow from 192.168.0.0/255.255.255.0
</Directory>
Ändern sie den angegebenen Pfad, wenn Perl auf ihrem PC in einem anderen Pfad installiert ist.
Ersetzen sie die IP-Adresse 192.168.0.0 durch die Basis-Adresse ihres lokalen Netzwerks, z.B. den ersten 3 Zahlen der IP-Adresse ihres eigenen PC und 0 ).

Aktivierung der Konfiguration

Analysieren sie die zentrale Konfigurations-Datei httpd.conf ihrer Apache-Installation (evtl. auch die Datei default-server.conf):

Wenn sie eine einzelne Anweisung ähnlich dieser finden
Include /etc/apache2/conf.d/*.conf
dann genügt es, ihre neu erstellte Konfigurations-Datei in das betreffende Verzeichnis zu verschieben (hier conf.d )

Wenn in ihrer Version einzelne Include-Anweisungen für jede individuelle Konfigurations-Datei enthalten sind (manche durch # abgeschaltet), dann erstellen sie eine neue Include-Anweisung, am besten nach allen bereits vorhandenen Include-Anweisungen, und mit einem Kommentar, z.B.
### Perl Dokumentation ###
Include conf/extra/perl_manual.conf

Webserver Neustart

Die geänderte Konfiguration wird erst nach einem Neustart des Webservers wirksam.

Details im Kapitel Neustart & Test dieser Seite.

Anwendung

Nach dem Neustart des Servers sollten alle Webseiten der installierten Dokumentation verfügbar sein.
Sie können die Web-Adresse mit dem Alias (hier perl-manual ) direkt in die Browser-Adresszeile eingeben.
Für dauerhafte Anwendung werden natürlich besser HTML-Hyperlinks angebracht: Diese enthalten weder absolute noch relative Pfade sondern das angelegte Alias (hier /perl-manual ) und sehen daher immer gleich aus, unabhängig vom Pfad jener Webseite, welche den Link enthält.

Browser-Adresszeile:
Für einen Webserver am eigenen PC können sie localhost verwenden, für andere Server deren Namen oder IP-Adressen:
http://localhost/perl-manual
http://192.168.0.1/perl-manual
http://MeinServer/perl-manual

HTML-Link
<a href="/perl-manual">Perl Doku</a>
SelfHTML: Aliasing von Web-Verzeichnissen (de)

UserDir - Öffentliche User Verzeichnisse

Das Apache-Modul userdir ermöglicht es, Adressen mit ~ Zeichen in die privaten Verzeichnisse (Ordner) verschiedener User zu leiten.
Mit User sind hier die am Betriebssystem des Server-PC angelegten User gemeint.
Diese Option ist daher vor allem für Gruppen-Webserver in Familien, kleinen Firmen, Abteilungen etc, geeignet. Jedes Mitglied kann eigene Webseiten verwalten, die mit einfachen Links öffentlich zugänglich sind.
Beispiel: Wenn dieser HTML-Link angeklickt wird
<a href="~Mayer" target="_blank">Mayer</a>
dann sendet ein Windows-Webserver diese Webseite
C:\Dokumente und Einstellungen\Mayer\Eigene Dateien\Meine Websites\index.htm
und in der Browser-Adresszeile wird angezeigt:
http://192.168.0.1/~Mayer/index.htm

Modul:

Suchen sie jene Text-Stelle, in der alle Module geladen werden: Modul userdir wird aktiviert:
Entfernen sie ein # Zeichen vor der Zeile oder tragen sie die Zeile neu ein.
Linux:
LoadModule userdir_module /usr/lib/apache2-prefork//mod_userdir.so
Windows:
LoadModule userdir_module modules/mod_userdir.so

Include:

In vielen Distributionen ist bereits eine Konfigurationsdatei httpd-userdir.conf für diese Option vorbereitet. Sie muss eingebunden (aktiviert) werden.

Wenn sie eine einzelne Anweisung ähnlich dieser finden
Include /etc/apache2/conf.d/*.conf
dann genügt es, die Konfigurations-Datei httpd-userdir.conf in das betreffende Verzeichnis conf.d zu verschieben.

Wenn in ihrer Version einzelne Include-Anweisungen für jede individuelle Konfigurations-Datei enthalten sind, dann entfernen sie das # vor dieser Zeile
Include conf/extra/httpd-userdir.conf

Konfigurations-Datei

Es gibt zahlreiche verschiedene Varianten für die UserDir Konfiguration. Studieren sie dazu das Manual und Beispiele aus dem Internet.
Hier eine gekürztes (!) Beispiel:
Die Anweisung UserDir bezeichnet den Pfad unterhalb des privaten User-Verzeichnisses.
In der <Directory>-Anweisung steht das * Zeichen für ~username wobei username die Namen aller am Server-PC registrierten User annehmen kann - eingeschränkt auf menschliche User, für die ein eigenes privates Verzeichnis angelegt wurde.
► In der Praxis werden zusätzlich einige Einschränkungen angeordnet, um die Sicherheit zu garantieren. (Apache-Dokumentation).
Beispiel (gekürzt !) für eine Windows-Datei httpd-userdir.conf
UserDir "Eigene Dateien/Meine Websites"
<Directory "C:/Dokumente und Einstellungen/*/Eigene Dateien/Meine Websites">
AllowOverride All
Options Indexes FollowSymLinks
</Directory>

Beispiel (gekürzt !) für eine Linux-Datei httpd-userdir.conf
UserDir "public_html"
<Directory "/home/*/public_html">
AllowOverride All
Options Indexes FollowSymLinks
</Directory>

Webserver Neustart

Die geänderte Konfiguration wird erst nach einem Neustart des Webservers wirksam.

Details im Kapitel Neustart & Test dieser Seite.

Test

Für den Test am Server-PC können sie localhost oder die IP-Adresse 127.0.0.1 verwenden, beides bezeichnet immer den aktuellen PC. Alternativ sollte auch die IP-Adresse und der Name des Server-PC funktionieren:
Browser-Adresszeile:
Test am Server-PC:
http://localhost/~Mayer
http://127.0.0.1/~Mayer/index.htm

Anwendung

Von einer allgemeinen Webseite (im Apache Arbeits-Verzeichnis) wird der User-Name mit vorangestelltem ~ Zeichen angegeben: Im ersten Fall wird die Standard Webseite geöffnet, normalerweise index.htm ,
im zweiten Beispiel die angegebene Seite test.htm.
Innerhalb des privaten Web genügen relative Adressen: Wenn sich die Dateien index.htm und test.htm im gleichen Verzeichnis befinden, dann genügt die Angabe des Datei-Namens.
Von einem privaten Web erreicht man das allgemeine Web durch ein vorangestelltes / Zeichen. Im Beispiel wird zuerst die Server-Homepage index.html adressiert, dann die Seite test.htm, beide im Server Arbeits-Verzeichnis (z.B. htdocs ).

HTML-Link von einer allgemeinen zu einer privaten Webseite:
<a href="~Mayer">Mayer</a>
<a href="~Mayer/test.htm">M-Test</a>

HTML-Link von einer privaten Webseite auf eine andere:
<a href="index.htm">Mayer</a>
<a href="test.htm">M-Test</a>

HTML-Link von einer privaten Webseite in das allgemeine Web:
<a href="/">Server-Homepage</a>
<a href="/test.htm">Server-Test</a>

Privates Verzeichnis - Exklusiv für den Server am eigenen PC

Moderne PC

verfügen über so viele Resourcen, dass der Betrieb eines eigenen Webservers an jedem professionell verwendeten PC selbstverständlich sein sollte.

Das gilt sogar bei Installation eines Betriebssystem, das so extrem viele Resourcen frisst wie M$ Vista.

Webseiten

sind heute das anerkannt beste und einfachste 'User Interface' für fast jede Art von Anwendung.
Webseiten lassen sich viel schneller und billiger entwickeln und testen als jede andere Applikation.
Ein besonderer Vorteil ist die Möglichkeit, Informationen und Anwendungen am eigenen PC mit solchen im Internet zu verknüpfen.

Allerdings dürfen Webseiten aus Sicherheits-Gründen nicht auf Resourcen des eigenen PC zugreifen (z.B. Programme starten, Verzeichnisse anzeigen, ..)
Ein eigener Webserver überbrückt diese Lücke: Die Apache Zugriffsrechte auf den eigenen PC sind einfach und genau einstellbar.

Szenario und Ziel

Das hier vorgestellte Beispiel geht davon aus, dass ein Webserver am eigenen privaten PC installiert ist.
Der Server soll einige Webseiten verwalten, die für alle PC des lokalen Netzwerks (LAN) zugänglich sind.
Unabhängig davon soll der Server einige private Webseiten verwalten, die heikle Informationen enthalten und ausschließlich am eigenen PC angezeigt werden sollen.
Aus dem Internet darf überhaupt kein Zugriff auf Webseiten des eigenen Servers erfolgen.

Web-Verzeichnis

Ergänzen sie ihr Web-Verzeichnis durch ein eigenes Verzeichnis für private Verwendung, z.B.auf Linux
/srv/www/htdocs
/srv/www/privat
oder auf Windows
C:\Web\htdocs
C:\Web\privat
und installieren sie im privaten Verzeichnis eine Webseite index.html
Diese private Start-Seite sollte möglichst einfach sein - Sie dient nur als Nachweis der Funktion und sollte einen Hinweis-Text enthalten, der sie eindeutig von anderen (öffentlichen) Seiten unterscheidet. Kontrollieren sie die korrekte Anzeige dieser Seite durch Öffnen mit Doppelklick.

Konfigurations-Datei

Legen sie im Apache Konfigurations-Verzeichnis eine Text-Datei an, z.B. privat.conf
Die Verzeichnis-Struktur der Konfiguration ist leider abhängig von System und Version. Suchen sie nach jenem Verzeichnis, in dem sich auch andere individuelle Dateien *.conf befinden, z.B.
/etc/apache2/conf.d
C:\Programme\apache Software Foundation\ Apache2.2\conf\extra

Tragen sie den Beispiel-Text in die Datei ein, d.h. ändern sie das Muster rechts nach ihrem Bedarf.
Inhalt der Text-Datei privat.conf (Windows-Beispiel)
# Verwaltung der Perl-Doku
Alias /perldoku "C:/Web/privat"
<Directory "C:/Web/privat">
Order allow,deny
Allow from 127.0.0.1/255.255.255.255
</Directory>
Ändern sie den angegebenen Pfad, wenn Perl auf ihrem PC in einem anderen Pfad installiert ist.
Die Adresse 127.0.0.1 bezeichnet immer den eigenen PC, unabhängig von der eingestellten IP-Adresse. Alternativ können sie den Namen localhost verwenden.
Die Maske 255.255.255.255 gilt in jedem Fall nur für eine einzige IP-Adresse und schließt alle anderen Adressen aus.

Aktivierung der Konfiguration

Analysieren sie die zentrale Konfigurations-Datei httpd.conf ihrer Apache-Installation (evtl. auch die Datei default-server.conf):

Wenn sie eine Anweisung ähnlich dieser finden
Include /etc/apache2/conf.d/*.conf
dann genügt es, ihre neu erstellte Konfigurations-Datei in das betreffende Verzeichnis zu verschieben (hier conf.d )

Wenn in ihrer Version einzelne Include-Anweisungen für jede individuelle Konfigurations-Datei enthalten sind (manche durch # abgeschaltet), dann erstellen sie eine neue Include-Anweisung, am besten nach allen bereits vorhandenen Include-Anweisungen, und mit einem Kommentar, z.B.
### Privates Verzeichnis ###
conf/extra/privat.conf

Webserver Neustart

Die geänderte Konfiguration wird erst nach einem Neustart des Webservers wirksam.

Details im Kapitel Neustart & Test dieser Seite.

Test

Nach dem Neustart des Servers können sie ihr privates Verzeichnis testen.

Führen sie den ersten Test am eigenen PC = Server-PC aus. Tragen sie das Alias (hier /privat ) in die Browser-Adresszeile ein. Die Start-Seite ihres privaten Verzeichnisses index.html sollte angezeigt werden.

Führen sie den gleichen Test an einem beliebigen anderen PC aus. In diesem Fall müssen sie jedoch Name oder IP-Adresse ihres privaten PC angeben.
Eine Fehlermeldung (Zugriff verweigert) sollte angezeigt werden.

Browser-Adresszeile:
Für den Test am eigenen PC können sie localhost oder IP-Adresse 127.0.0.1 verwenden, beides bezeichnet immer den aktuellen PC. Alternativ sollte auch die IP-Adresse und der Name ihres PC funktionieren:
http://localhost/privat
http://127.0.0.1/privat
Für den Test an einem anderen PC müssen sie Name oder IP-Adresse ihres eigenen PC eingeben (auf dem ihr privates Verzeichnis angelegt ist):
http://192.168.0.1/privat
http://MeinPC/privat
Ersetzen sie 192.168.0.1 bzw. MeinPC durch IP-Adresse und Name ihres PC. Beides erfahren sie auf Windows mit den Befehlen
C:\> set computername
C:\> ipconfig

Anwendung

Für dauerhafte Anwendung werden natürlich besser HTML-Hyperlinks angebracht: Diese enthalten weder absolute noch relative Pfade sondern das angelegte Alias (hier /privat ), unabhängig vom Pfad jener Webseite, welche den Link enthält.
Die zweite Zeile zeigt, dass auch Sub-Verzeichnisse und Dateien innerhalb des privaten Verzeichnisses angegeben werden können.

HTML-Link von einer öffentlichen Webseite:
<a href="/privat">Privat</a>
<a href="/privat/test/test.php">Test</a>
Innerhalb des privaten Webs werden Webseiten relativ adressiert, genauso wie innerhalb jedes anderen Webs. HTML-Link von einer privaten Webseite zu einer anderen:
<a href="test/test.php">Test</a>

Web-Editor

Mit ihrem Web-Editor verwalten sie nun 2 getrennte Webs: Das öffentliche Web (für ihr lokales Netzwerk) haben sie vermutlich bereits eingestellt.

Dazu kommt nun ihr privates Web, das völlig unabhängig davon verwaltet wird.

Lösungen:

In ihrem privaten Web können sie nun beliebige Web-basierte Lösungen installieren, ohne dass darauf ein Zugriff von außen möglich ist. Zahlreiche derartige Programme und -Pakete sind im Internet kostenlos verfügbar.

Selbstverständlich können sie auch eigene Lösungen entwickeln: Mit Perl oder PHP lassen sich relativ rasch und einfache Programme entwickeln. Sie haben mit dynamischen Webseiten Zugriff auf alle Verzeichnisse und Dateien ihres PC, auf Datenbanken, und auf alle lokalen und entfernten Webseiten, Mails etc.

Softlink (Alias, Verknüpfung)

Auf Linux werden Links (HardLinks, Softlinks) vom Betriebssystem uneingeschränkt unterstützt.
So erzeugen sie z.B. einen Softlink vom Web-Verzeichnis zu ihrem privaten Verzeichnis:
# ln -s /home/mayer /srv/www/htdocs/mayer
Im Verzeichnis htdocs finden sie danach ein Objekt mayer das aussieht wie ein Verzeichnis (Ordner) und beim Öffnen direkt in ihr privates Verzeichnis /home/mayer führt.
Derartige Links dienen auf Linux dazu, einen Verzeichnis-Baum nach Bedarf einzurichten, unabhängig von der realen hierarchischen Struktur.
Links können an beliebige Stellen führen, auch in andere Festplatten und sogar in entfernte Verzeichnisse anderer PC. Wenn smbclient läuft, können sie z.B. an beliebiger Stelle (aus dem Web-Verzeichnis, aus ihrem privaten Verzeichnis, ...) auf die freigegebenen Dateien des Windows-PC zugreifen - wenn sie einen entsprechenden Link legen.

Links lassen sich auch zur Erweiterung des Apache Arbeits-Verzeichnisses verwenden. Das funktioniert zwar, davon wird jedoch abgeraten: Es ist kein Zufall, dass die Apache Standard Konfiguration nach Kräften versucht, das zu unterbinden.
Bedingungen:
Auf das Ziel-Verzeichnis muss mindestens der Lese-Zugriff des Apache-Users (wwwrun) erlaubt werden.
Für jenes Verzeichnis, in dem sich der Link befindet, muss die Verwendung von Links erlaubt werden:
<Directory "...Verzeichnis..." >
Options FollowSymLinks
</Directory>
Auch Windows bietet in neueren Versionen Links (Verknüpfungen, Alias, Verweise), diese scheinen jedoch nicht unter allen Bedingungen sauber zu funktionieren.

So wird ein Link vom Web-Verzeichnis zu einem privaten Verzeichnis gelegt:
Öffnen sie ihr privates Verzeichnis, z.B.
C:\Dokumente und Einstellungen\Mayer\Eigene Dateien
Rechtsklick auf das Verzeichnis Website, Befehl Verknüpfung erstellen. Ändern sie den Namen beliebig, z.B. auf ihren Namen mayer (möglichst ohne Leerzeichen, Sonderzeichen etc.)
Die erzeugte Verknüpfung (Link, Alias) ist in Wirklichkeit eine Datei mayer.lnk deren Datei-Erweiterung versteckt wird.
Verschieben sie den Link in ihr Web-Verzeichnis, z.B.
C:\Web\mayer.lnk
Nun enthält ihr Web-Verzeichnis ein symbolisches Unter-Verzeichnis, das beim Öffnen direkt in ihr privates Verzeichnis führt.

Richten sie die Apache-Konfiguration entsprechend ein.

Tipp: Mehr Transparenz und Sicherheit bietet die im Kapitel Privates Verzeichnis vorgestellte Methode.

Webseite oder Umleitung in jedem Verzeichnis

(No) Directory Browsing

Wenn vom Browser einer/s BesucherIn ein Verzeichnis ohne genaue Angabe der Datei angefordert wird, dann liefert der Webserver normalerweise eine Liste aller darin enthaltenen Verzeichnisse (Ordner) und Dateien, ähnlich wie im Windows Explorer.

Erwünscht wäre jedoch, dass ihr/e BesucherInnen in jedem Fall eine brauchbare Webseite erhalten
Die Anzeige einer Dateien-Liste ist aus Sicherheits-Gründen unerwünscht.
Ausnahme: Am eigenen PC sollte DirectoryBrowsing möglich sein.

<Directory>

Alle in diesem Kapitel vorgestellten Anweisungen werden normalerweise innerhalb eines <Directory>-Blocks erteilt. Sie gelten dann innerhalb des angegebenen Verzeichnisses und in allen seinen Unter-Verzeichnissen.

.htaccess

Alternativ kann man die Anweisungen für ein Verzeichnis auch in einer besonderen Text-Datei festlegen. Die Datei muss genau diesen Namen tragen und sich innerhalb des Verzeichnisses befinden. Im Text-Inhalt können die gleichen Anweisungen verwendet werden wie in einem <Directory>-Block, mit Ausnahme der Auszeichnung <Directory></Directory> selbst.
Beispiel (zuerst mit, dann ohne Angabe der Datei: Beide Links liefern im Web von PS-Trainer die gleiche Webseite (siehe unten).

index.html

Um das erwünschte Verhalten zu erreichen, sollte jedes Verzeichnis ihres Webs eine Datei index.html enthalten.
Inhalt:
Diese Datei ist selbst die wichtigste Webseite des jeweiligen Verzeichnisses.
Alternative: Die Datei enthält eine Umleitung auf die wichtigste Seite.

Jedes Verzeichnis im Web von PS-Trainer enthält eine derartige Datei mit Umleitung.
So wird z.B. jede Anfrage des Verzeichnisses entwicklung automatisch an die Webseite entwicklung/entwicklung.html weitergeleitet.

Details zur automatischen Umleitung mit Javascript

Web-Startseite

Ein Sonderfall ist die Startseite des gesamten Webservers.
Wenn am Browser lediglich Name oder Adresse des Webservers eingegeben werden, dann sucht dieser im Webseiten-Verzeichnis DocumentRoot nach der in der Konfiguration angegebenen Startseite (z.B. index.html)

Diese Regel müssen sie nicht nur am eigenen Webserver beachten sondern auch am Server jedes Providers:
Wenn sie Webseiten auf den Server eines Providers hochladen, dann muss die Startseite einen vorgegebenen Namen erhalten - normalerweise index.html
In der Variablen DirectoryIndex der Konfiguration werden die Namen jener Dateien eingetragen, welche der Webserver öffnet, wenn vom Browser kein Datei-Name angegeben wurde.
Die Namen werden in der angegebenen Reihenfolge gesucht. Verwenden sie ein Leerzeichen als Trennzeichen zwischen den Namen.
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>

XHTML CSS