benjamin: Apache nur bestimmte extensions zulassen

Hallo!

Ich habe das nach CKs Tip (s.u.) so eingebaut:
<FilesMatch "*">
        Order Deny,Allow
        Deny From All
</FilesMatch>

#       first the pictures
<FilesMatch ".(bmp|pcx|gif|jp?g|png)$">
        Allow from all
</FilesMatch>

#       next the pages
<FilesMatch ".(htm|jsp|html|js|css)$">
        Allow from all
</FilesMatch>

Nur hab ich jetzt das Problem daß ich nicht mehr direkt auf mein Root Directory komme. Bei www.blabla.com kommt access denied und www.blabla.com/index.html geht.
Kann ich jetzt irgendwie root zulassen (hebelt wahrscheinlich alles wieder aus) oder kann ich beim Zugriff auf / den User auf index.jsp umleiten, damit er gar nicht in das Access Denied Problem läuft?

Danke & Gruß
Benjamin

Die folgende Nachricht zum Thema stammt von: Christian Kruse,  ckruse@wwwtech.de, 29. März 2004, 21:43 Uhr
http://cforum.defunced.de/blogg/

Hallo wahsaga,

Ich denke mir daß müßte mit <Location> oder <Files> funktionieren.

FilesMatch wäre m.E. vorzuziehen,

Es gibt keinen Unterschied zwischen <Files ~ "expr"> und <FilesMatch "expr">.

Ich verstehe aber noch nicht wie ich daß ganze negieren kann, d.h. weise alle
Zugriffe ab, welche nicht die genannte Erweiterung haben.

negieren von regex-pattern generell über ein vorangestelltes ^

Nee. Man kann *Zeichenklassen* so negieren ([^a] heisst: alles ausser 'a'). Ansonsten heisst
das Dach 'Anfang des Strings' bzw. 'Anfang der Zeile' im Multiline-Modus.

<FilesMatch ".(gif|jpe?g|png)$">

negiert: <FilesMatch ".^(gif|jpe?g|png)$">

Nein. Es gibt im Apachen keine Möglichkeit, den RegEx für <FilesMatch> bzw. <Files ~> zu
negieren. Es wird allerdings gerade darüber diskutiert, diese Möglichkeit mit aufzunehmen.
Man könnte das Verhalten allerdings über zwei <Files>-Anweisungen erreichen:

<Files "*">
 Order Deny,Allow
 Deny From All
</Files>

<Files ~ ".(gif|jpe?g|png|html?)$">
  Order Allow,Deny
  Allow From All
</Files>

So oder so ähnlich müsste das funktionieren.

Grüße,
 CK

  1. use Mosche;

    Ich habe das nach CKs Tip (s.u.) so eingebaut:

    Einfaches verlinken reicht auch.
    Es geht doch prinzipiell um folgendes. Du hast dir verboten, auf den Pfad '/' zuzugreifen. Also musst du es einfach erlauben.

    <FilesMatch "^/$">
         Allow from all
    </FilesMatch>

    ungetestet

    use Tschoe qw(Matti);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. Es geht doch prinzipiell um folgendes. Du hast dir verboten, auf den Pfad '/' zuzugreifen. Also musst du es einfach erlauben.

      <FilesMatch "^/$">
           Allow from all
      </FilesMatch>

      ungetestet

      use Tschoe qw(Matti);

      mhhh... das oben enthält jetzt die negierung und ich dachte die geht nicht bei filesmatch. jetzt bin ich etwas konfus.

      ich muß wahrscheinlich irgendwie die extension freigeben die beim aufruf von / aufgerufen wird.

      gruß
      Benjamin

      1. hi,

        <FilesMatch "^/$">

        mhhh... das oben enthält jetzt die negierung und ich dachte die geht nicht bei filesmatch. jetzt bin ich etwas konfus.

        nein, tut es nicht.
        ^ heisst stringanfang, $ heisst stringende.

        ich muß wahrscheinlich irgendwie die extension freigeben die beim aufruf von / aufgerufen wird.

        was bitte hat denn / deiner meinung nach für eine extension? :-)

        gruss,
        wahsaga

      2. use Mosche;

        <FilesMatch "^/$">
        mhhh... das oben enthält jetzt die negierung und ich dachte die geht nicht bei filesmatch. jetzt bin ich etwas konfus.

        Das ist keine Negierung. Negierung funktionier nur für Zeichenklassen, also zB [^h] heißt: alles, aber kein h. Der '^' heißt Stringanfang. Der ganze Ausdruck bedeutet:

        1. Stringanfang:
        2. direkt danach ein '/'
        3. direkt danach Stringende

        Das ist genau der Pfad, auf den zugegriffen wird, wenn du auf / zugreifst (das ist wuasi Tautologie).

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.