Apache Konfiguration mit mehreren CGI-Verzeichnissen
Thomas
- cgi
Ich habe folgendes Problem und ich hoffe ihr könnt mir weiterhelfen:
Habe Apache unter Solaris installiert und möchte andere Verzeichnisse einbinden, die nicht unter DocumentRoot liegen.
Die Struktur, die ich einbinden möchte sieht wie folgt aus:
--/opt/bcnu/
|---www
|---cgi-scripts
|---docs
Unter www ist eine index.html datei, die auf ../cgi-scripts verweist.
In der httpd.conf Datei habe ich folgende Einträge:
Alias /bcnu/ "/opt/bcnu/www/"
<Directory "/opt/bcnu/www">
AllowOverride None
Options Indexes MultiViews FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
d.h. wenn ich jetzt im Browser http://server/bcnu eingebe, werde ich weitergeleitet auf ein Script, welches sich unter /opt/bcnu/cgi-scripts befindet.
Um dort cgi-scripte auszuführen habe ich folgenden Eintrag in die httpd.conf Datei vorgenommen:
ScriptAlias /cgi-scripts/ "/opt/bcnu/cgi-scripts/"
<Directory "/opt/bcnu/cgi-scripts">
Options ExecCGI FollowSymLinks
</Directory>
Wenn ich jetzt also folgendes in den Browser eingebe:
http://server/bcnu wird der Request automatisch zu http://server/bcnu/cgi-scripts/bcnu.cgi weitergeleitet.
Allerdings sehe ich dann nur den Scriptinhalt und es wird nicht ausgeführt.
Wenn ich händisch http://server/cgi-scripts/bcnu.cgi eingebe wird es ausgeführt.
Jetzt die Frage: Kann ich irgendwie den Scriptalias anders definieren:
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
Vielen Dank
Hi,
Ich habe folgendes Problem und ich hoffe ihr könnt mir weiterhelfen:
Habe Apache unter Solaris installiert und möchte andere Verzeichnisse einbinden, die nicht unter DocumentRoot liegen.
Die Struktur, die ich einbinden möchte sieht wie folgt aus:
--/opt/bcnu/
|---www
|---cgi-scripts
|---docs
Unter www ist eine index.html datei, die auf ../cgi-scripts verweist.
In der httpd.conf Datei habe ich folgende Einträge:
Alias /bcnu/ "/opt/bcnu/www/"
<Directory "/opt/bcnu/www">
AllowOverride None
Options Indexes MultiViews FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
d.h. wenn ich jetzt im Browser http://server/bcnu eingebe, werde ich weitergeleitet auf ein Script, welches sich unter /opt/bcnu/cgi-scripts befindet.
Um dort cgi-scripte auszuführen habe ich folgenden Eintrag in die httpd.conf Datei vorgenommen:
ScriptAlias /cgi-scripts/ "/opt/bcnu/cgi-scripts/"
<Directory "/opt/bcnu/cgi-scripts">
Options ExecCGI FollowSymLinks
</Directory>
Wenn ich jetzt also folgendes in den Browser eingebe:
http://server/bcnu wird der Request automatisch zu http://server/bcnu/cgi-scripts/bcnu.cgi weitergeleitet.
Allerdings sehe ich dann nur den Scriptinhalt und es wird nicht ausgeführt.
Wenn ich händisch http://server/cgi-scripts/bcnu.cgi eingebe wird es ausgeführt.
Jetzt die Frage: Kann ich irgendwie den Scriptalias anders definieren:
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
^ab hier notiere !
Rolf
^ab hier notiere !
Rolf
Dort steht leider nur allgemein wie man es aufsetzt. Hilft mir leider bei meinem Problem nicht weiter :-(
Hi,
^ab hier notiere !
Rolf
Dort steht leider nur allgemein wie man es aufsetzt. Hilft mir leider bei meinem Problem nicht weiter :-(
Stimmt! Diese Seite ist ja auch für den Beginner!
Und nicht für den Profi !
Und wie ein ScriptAlias eingerichtet wird kann dort jeder Beginner nachlesen...
Rolf
Hi,
^ab hier notiere !
Rolf
Dort steht leider nur allgemein wie man es aufsetzt. Hilft mir leider bei meinem Problem nicht weiter :-(
Stimmt! Diese Seite ist ja auch für den Beginner!
Und nicht für den Profi !
Und wie ein ScriptAlias eingerichtet wird kann dort jeder Beginner nachlesen...
Jetzt fühl Dich doch nicht gleich auf den Schlips getreten. Ich bin ja für alle Tipps dankbar, nur wenn dort nicht die Lösung für mein Problem steht, kann ich es doch schreiben.
Rolf
Tach!
Wenn ich jetzt also folgendes in den Browser eingebe:
http://server/bcnu wird der Request automatisch zu http://server/bcnu/cgi-scripts/bcnu.cgi weitergeleitet.
Allerdings sehe ich dann nur den Scriptinhalt und es wird nicht ausgeführt.
Wenn ich händisch http://server/cgi-scripts/bcnu.cgi eingebe wird es ausgeführt.
Das sind ja auch zwei verschiedene URLs, einmal mit bcnu und einmal ohne.
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
Das ware aus meiner Sicht aber genau die Loesung. Was genau heisst den "funktioniert nicht"?
Tach!
Wenn ich jetzt also folgendes in den Browser eingebe:
http://server/bcnu wird der Request automatisch zu http://server/bcnu/cgi-scripts/bcnu.cgi weitergeleitet.
Allerdings sehe ich dann nur den Scriptinhalt und es wird nicht ausgeführt.
Wenn ich händisch http://server/cgi-scripts/bcnu.cgi eingebe wird es ausgeführt.
Das sind ja auch zwei verschiedene URLs, einmal mit bcnu und einmal ohne.
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
isses eben nicht, muss so lauten
ScriptAlias "/cgi-scripts/" "physischer/pfad"
Rolf
Das ware aus meiner Sicht aber genau die Loesung. Was genau heisst den "funktioniert nicht"?
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
isses eben nicht, muss so lauten
ScriptAlias "/cgi-scripts/" "physischer/pfad"
Dann verstehe ich Dein Problem nicht. Die URL http://server/cgi-scripts/bcnu.cgi funktioniert ja laut Deiner Aussage, genau so, wie Du's konfiguriert hast. Die URL http://server/bcnu/cgi-scripts/bcnu.cgi, also die, auf die Du weiterleitest, funkioniert dagegen nicht, was logisch ist, weil Du ein solches Scriptverzeichnis gar nicht konfiguriert hast.
Oh, jetzt hab ich Rolf mit Thomas verwechselt. Naja, hab ich wenigstens ne Gelegenheit, noch nen Link nachzuschieben. ;-)
http://httpd.apache.org/docs/howto/cgi.html
Dort sind die verschiedenen CGI-Moeglichkeiten des Apachen schoen beschrieben, wie ich finde.
So long
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/" funktioniert leider nicht :-(
isses eben nicht, muss so lauten
ScriptAlias "/cgi-scripts/" "physischer/pfad"
Mit Alias habe ich mir einen Sprung außerhalb meiner DocumentRoot definiert /bcnu/ /opt/bcnu/www
In www steht jetzt ein link zu ../cgi-scripts, d.h. es ist ein automatischer Request im Browser http://server/bcnu/cgi-scripts, der natürlich nicht bearbeitet wird, weil ich nur /cgi-scripts/ /opt/bcnu/cgi-scripts (ist der physische Pfad) definiert habe. Daher meine Frage, ob sich auch etwas wie
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts" definieren läßt?
Dann verstehe ich Dein Problem nicht. Die URL http://server/cgi-scripts/bcnu.cgi funktioniert ja laut Deiner Aussage, genau so, wie Du's konfiguriert hast. Die URL http://server/bcnu/cgi-scripts/bcnu.cgi, also die, auf die Du weiterleitest, funkioniert dagegen nicht, was logisch ist, weil Du ein solches Scriptverzeichnis gar nicht konfiguriert hast.
Hallo Thomas,
ScriptAlias "/bcnu/cgi-scripts/" "/opt/bcnu/cgi-scripts/"
funktioniert leider nicht :-(
Doch, das tut es - aber wahrscheinlich nicht so, wie Du das verwendest.
Dein Sonderfall ist, daß Du Alias- und ScriptAlias-Anweisungen von
URLs verwendest, die *Präfixe* voneinander sind.
Naheliegenweise nimmst Du an, daß der Apache schlau genug sei, den
Match zwischen URL und Verzeichnispfad via "best-fit" zu machen, also
einen URL innerhalb des CGI-Verzeichnisses entsprechend zu interpre-
tieren.
Das dachte ich auch, als ich die ersten Alias-Anweisungen für
www.teamone.de eingetragen hatte - und stieß auf dasselbe Problem wie Du.
Meinen Erfahrungen zufolge macht der Apache nicht best-fit, sondern
*first-fit*, wenn er mehrere mögliche URL-Präfixe in seiner Alias-
Konfiguration findet. (Nicht, daß ich das irgendwo in der Apache-
Dokumentation gelesen hätte ...)
Das bedeutet: Die *Reihenfolge* der Alias- und Script-Alias-Anweisungen
innerhalb der httpd.conf ist entscheidend!
Du spezieller Anweisung (nämlich Dein ScriptAlias) muß *zuerst* ange-
geben werden, die allgemeinere (Dein Alias) dahinter.
Das zumindest habe ich schließlich getan - und: es funktionierte.
Viele Grüße
Michael