On 07.10.2007, at 15:51, Olaf Lautenschlaeger wrote:

On Saturday, October 06, 2007 10:30 PM [GMT+1=CET],
Martin Ebert <[EMAIL PROTECTED]> wrote:

# In einem Unterverzeichnis (und seinen Unterverzeichnissen)

<Directory "/path/to/my/folder">

# soll nun folgendes gelten: Wenn dort _keine_ index.html
# gefunden wird,

    DirectoryIndex MyScript index.html

MyScript sollte hier an das Ende ansonsten wird nie zuvor nach index.html gesucht und *immer* gleich MyScript verwendet...

# dann soll das Script /usr/local/bin/xxx.pl aufgerufen werden

    AliasMatch ^/path/to/my/folder/(.*/)?MyScript$ \
     "/usr/local/bin/xxx.pl $1"
</Directory>

Das AliasMatch muss erstens aus dem Directory-Container heraus, es ist hier nicht erlaubt. Zweitens macht /path/to/my/folder/ hier keinen Sinn da der Regex von AliasMatch die URL und nicht den Filesystem-Pfad untersucht, also eher sowas wie "^(.*/)MyScript$".

Gleichzeitig muss auch /usr/local/bin/xxx.pl für den Server erreichbar und als CGI-Skript ausführbar sein, was bei /usr/local/bin/ * nicht unbedingt der Fall sein sollte; also wird auch noch folgendes nötig sein:

<Directory /usr/local/bin>
  Order allow,deny
  Allow from all
  Options +ExecCGI
  SetHandler cgi-script [oder AddHandler cgi-script .pl...]
</Directory>

(Aber bitte nicht wirklich /usr/local/bin verwenden; schlauer wäre ein dediziertes Verzeichnis für CGI-Skripte, wie /usr/local/apache/ cgi-bin/ o.Ä.)

Im Endeffekt kann man sich auch gleich die Options- & SetHandler-/ AddHandler-Direktiven sparen indem man direkt ScriptAliasMatch anstatt des AliasMatch verwendet :)

# (Arbeitsverzeichnis muss aber das via URL adressierte Verzeichnis sein!)

Der Klammerausdruck "matcht" alle evtl. noch folgenden Dirs in der URL, welche in "$1" umgefüllt und übergeben werden - xxx.pl kann dann dorthin
'chdir' machen.

Oder man holt sich den ursprünglichen URL-Pfad einfach aus der entsprechenden Environment-Variablen REQUEST_URI, also in Perl $ENV {'REQUEST_URI'} - macht man dies und hat z.B. schon ein /cgi-bin/- Verzeichnis dann kann man sich das ganze ScriptAliasMatch-Getue getrost sparen und als einzigste Änderung bleibt:

DirectoryIndex index.html /cgi-bin/index.pl

Das wäre wohl das wirklich einfachste ;-)

Auf keinen Fall vergessen, solche an den Script übergebenen Parameter
auf Sinnhaftigkeit gegenzuchecken! Böhse Buben schleusen sonst Sachen
wie "../../" ein.

Oder andere nette Dinge :)

Cheers,
Erik


--------------------------------------------------------------------------
               Apache HTTP Server Mailing List "users-de"
     unsubscribe-Anfragen an [EMAIL PROTECTED]
          sonstige Anfragen an [EMAIL PROTECTED]
--------------------------------------------------------------------------

Antwort per Email an