Thomas: Apache Konfiguration mit mehreren CGI-Verzeichnissen

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

  1. 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

    http://i-netlab.de/apache/apache.htm

    1. ^ab hier notiere !

      Rolf

      http://i-netlab.de/apache/apache.htm

      Dort steht leider nur allgemein wie man es aufsetzt. Hilft mir leider bei meinem Problem nicht weiter  :-(

      1. Hi,

        ^ab hier notiere !

        Rolf

        http://i-netlab.de/apache/apache.htm

        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

        1. Hi,

          ^ab hier notiere !

          Rolf

          http://i-netlab.de/apache/apache.htm

          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

  2. 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"?

    1. 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"?

      1. 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.

        1. 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

        2. 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.

  3. 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