Das Problem hat ja mit dem installierten Apache nichts zu tun, das ist ein reines Verständnisproblem.
Links mit Protokoll "file:" (wie im Beispiel) werden vom Browser gar nicht erst an irgendeinen Webserver gesendet, eben weil das Protokoll "file:" ist anstelle von "http:". D.h. wenn ein solcher Link in einem HTML Dokument steht, dann wird der Browser auf dem Clientrechner(!) direkt auf die Festplatte gehen und von dort versuchen, dass spezifizierte Dokument "D:/test.txt" laden, wobei hier auch noch ein Slash "/" zu viel angegeben ist, richtig müßte der Link so lauten:
- Code: Select all
<a href="file://D:/test.txt">
Dann (und nur dann) wenn der Browser auf demselben Rechner liegt wie die Apache Installation, dann wird von diesem Rechner das gewünschte Dokument D:/test.txt geladen. Wenn der Browser aber beispielsweise auf einem anderen Rechner im LAN die Seite geladen hat, dann wird von DIESEM PC versucht, eine Datei D:/test.txt zu laden.
In jedem Fall wird dabei aber KEIN Apache Server kontaktiert, der Browser sendet KEINE Anfrage an irgendeinen Apache Server und das Dokument wird in KEINEM FALL von einem PHP Interpreter ausgeführt, auch nicht, wenn man das Dokument beispielsweise test.php nennt. Da der Browser das Dokument selbst öffnet (und nicht bei einem Apache Server anfragt), wird er es nicht an einen PHP Interpreter schicken, weil der Browser keinerlei Kenntnis von PHP hat. Für einen solchen Link mit "file:" ist also ein Apache Server weder notwendig, noch wird ein Request auf einen Apache Server geschickt. Das bedeutet dann aber auch, dass man mit keiner Einstellung der Welt in irgendeinem Apache Server irgendein Verhalten erzeugen kann, dass solche Links vom Apache Server (egal von welchem) ausgeführt werden, denn es wird kein Apache Server benötigt. Das ganze Scenario läuft ohne Apache.
Das kann man auch damit nicht verbessern, dass man im Link noch einen Domainnamen a la "localhost" angibt, das ist zwar für das Protokoll http: eine valide Angabe, aber für das hier gewählte Protokoll "file:" ist das syntaktischer Unsinn und der Browser fängt überhaupt nichts damit an.
Ergo: möchte man Dokumente von einem Apache Server anfordern, so MUSS IN JEDEM FALL das Protokoll http: (oder https:) angegeben werden. Die nächste Angabe in so einer URL ist die Serveradresse, das kann "localhost" sein (das wäre dann wieder derselbe Rechner, auf dem auch der Browser läuft, der diese Seite dann anfordert), das kann eine IP sein, beispielsweise die LAN IP des Rechners, wo der Apache installiert ist, das kann ein anderer Servername sein, beispielsweise "meinserver" oder ähnlich, wobei man dann selbst dafür sorgen muss, dass der Rechner, wo der Browser läuft, auch "weiß", welcher Rechner mit "meinserver" gemeint ist.
Und im Anschluss an die Angabe des Protokolls und des Servers kann man sog. "Ressourcen" angeben, das sind meistens Ordnernamen oder Dateinamen und sie sehen zumindest wie Ordnernamen aus. An dieser Stelle erst kann man mit einer ALIAS Anweisung eingreifen, da kann man dem Apache "befehlen", dass er bei bestimmten Ordnernamen in Wirklichkeit in ganz anderen Verzeichnissen nachschaut, als es dem Link nach den Anschein hat. Beispiel:
- Code: Select all
<a href="http://localhost/meinordner/test.txt">
Wird auf diesen Link geklickt, dann schickt der Browser an den Rechner "localhost" (das ist dieser Rechner selbst, also muss dort auch ein Apache laufen, damit da jemand antwortet) den Request, schicke mir die Ressource "/meinordner/test.txt". Ohne weitere Zusatzeinstellung würde jetzt der Apache auf dem localhost hingehen, sich in das DocumentRoot Verzeichnis begeben und von dort in den Ordner meinordner und würde von dort die Datei test.txt ausliefern. Diese Standardverhalten kann man mit einer ALIAS Anweisung überschreiben, in diesem Fall brauchen wir so eine Anweisung in httpd.conf:
- Code: Select all
ALIAS /meinordner D:/
Wenn Apache so eine ALIAS Anweisung in der Konfiguration hat, dann würde er im obigen Fall sein Verhalten ändern, er würde NICHT zum DocumentRoot gehen und NICHT von dort zum Ordner meinordner, sondert er würde stattdessen direkt nach D:/ gehen dann von dort die Datei test.txt ausliefern.
Möchte man von einem Rechner im LAN den Browser starten und von dem Rechner mit dem Apache Server dieses test.txt Dokument anfordern, so gibt man statt localhost in dem Link beispielsweise einfach die LAN IP von dem Rechner an, wo der Apache läuft, beispielsweise 192.168.1.22 oder so, dann sieht das so aus:
- Code: Select all
<a href="http://192.168.1.22/meinordner/test.txt">
Und wegen der ALIAS Anweisung auf dem Zielrechner, wo der Apache läuft, geht dort der Apache hin und liefert wieder das Dokument test.txt aus D:/ heraus aus. So wie es (wahrscheinlich) gewünscht ist. Mit der Angabe von "file:" statt "http:" kommt man hier nicht ans Ziel.