httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Abele <e...@codefaktor.de>
Subject Re: Script wenn kein index.html
Date Sun, 07 Oct 2007 16:13:52 GMT
On 07.10.2007, at 15:51, Olaf Lautenschlaeger wrote:

> On Saturday, October 06, 2007 10:30 PM [GMT+1=CET],
> Martin Ebert <martin.ebert@wb-online.de> 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 users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Mime
View raw message