Schorsch: %{REQUEST_FILENAME} !-d fürt zu NetworkError: 403 Forbidden

Guten Tag

Wenn ich www.blah.ch aufrufe, erhalte ich
"You don't have permission to access / on this server."

Wenn ich www.blah.ch/irgendwas aufrufe, gibt es keine Probleme.

Ich habe herausgefunden, dass es in der .htaccess Datei an dieser Zeile liegt:
RewriteCond %{REQUEST_FILENAME} !-d

Frage:

Warum verursacht RewriteCond %{REQUEST_FILENAME} !-d einen "403 Forbidden" ?

Oder:
Wie bringe ich den  "403 Forbidden" ohne auf die Funktionalität von
RewriteCond %{REQUEST_FILENAME} !-d  verzichten zu müssen?

Danke für jeden Input im Voraus!

  1. Hallo,

    Wenn ich www.blah.ch aufrufe, erhalte ich
    "You don't have permission to access / on this server."

    das passiert normalerweise dann, wenn das Verzeichnis keine index-Datei enthält (index.html, index.php oder was auch immer konfiguriert ist), gleichzeitig aber die Auflistung des Verzeichnisinhalts für diesen Fall verboten ist. Dann hat der Apache nichts mehr, womit er den Request "befriedigen" könnte.

    Ich habe herausgefunden, dass es in der .htaccess Datei an dieser Zeile liegt:
    RewriteCond %{REQUEST_FILENAME} !-d

    An der Bedingung allein sicher nicht - welche Rewrite Rule kommt in diesem Fall zum Tragen?

    Warum verursacht RewriteCond %{REQUEST_FILENAME} !-d einen "403 Forbidden" ?

    Tut es nicht.

    Wie bringe ich den  "403 Forbidden" ohne auf die Funktionalität von
    RewriteCond %{REQUEST_FILENAME} !-d  verzichten zu müssen?

    Kontrolliere deine RewriteRule und analysiere, was wirklich passiert.
    Dann kann man weitersehen.

    Ciao,
     Martin

    --
    ... und der FDP-Wähler gibt seine Stimme der FDP.
       (Faszinierende Erkenntnis meines Gemeinschaftskunde-Lehrers, 9. Schuljahr)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Danke Martin!

      Meine RewriteRule sieht so aus:

      RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule (.*) meinOrdner/meinedatei.php

      #Dir Listening ausschalten
      Options -Indexes

      Ich verstehe:
      Das Verzeichnis von "www.blah.ch" hat keine index - Datei.
      Weil das Verzeichnis aber existiert, versucht nun
      Apache dessen Inhalt anzuzeigen. Aber das ist "verboten" und nun daher
      gibts nichts mehr anzuzeigen...

      Frage

      Aber warum dann  ein "403 Forbidden"?
      Ich müsste also Apache eine Ausnahme hinzufügen, die da heisst:

      Wenn du auf www.blah.ch bist (home Verzeichnis),
      dann leite auch auf meinOrdner/meinedatei.php um.

      Ist das ein korrekter Lösungsansatz?
      Falls ja, ein kleiner Tipp, wie man eine solche Ausnahme hinzufügt?

      Besten Dank!

      1. Hallo,

        RewriteEngine On

        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule (.*) meinOrdner/meinedatei.php

        #Dir Listening ausschalten
        Options -Indexes

          
        okay, das sagt schon mehr.  
          
        
        > Ich verstehe:  
        > Das Verzeichnis von "www.blah.ch" hat keine index - Datei.  
        > Weil das Verzeichnis aber existiert, ...  
          
        Nein. Der Request lautet auf "/", da treffen deine beiden RewriteConds nicht zu - die matchen nur Entsprechungen im Dateisystem.  
        Deshalb ...  
          
        
        > Weil das Verzeichnis aber existiert, versucht nun Apache dessen Inhalt anzuzeigen. Aber das ist "verboten" und nun daher gibts nichts mehr anzuzeigen...  
          
        ... greift der Apache nach wie vor auf / zu, so als ob gar kein Rewriting konfiguriert wäre.  
          
        
        > Aber warum dann  ein "403 Forbidden"?  
          
        Was sonst? Vielleicht "404 Not Found"? Nein, der Apache hat ja "etwas" gefunden, was auf den Request passen könnte, nämlich das Verzeichnislisting (nicht listening, "listen" heißt zuhören). Aber es ist ihm verboten worden, das tatsächlich auszuliefern, also 403.  
          
        
        > Ich müsste also Apache eine Ausnahme hinzufügen, die da heisst:  
        > Wenn du auf www.blah.ch bist (home Verzeichnis),  
        > dann leite auch auf meinOrdner/meinedatei.php um.  
        > Ist das ein korrekter Lösungsansatz?  
          
        Ein möglicher, zumindest. Aber was willst du denn eigentlich erreichen? So wie es aussieht, willst du jeden Request, der nicht auf eine existierende Datei oder ein existierendes Verzeichnis abgebildet werden kann, auf eine einzige Ressource umbiegen. Sieht mir eher danach aus, als wolltest du den Mechanismus des ErrorDocument nachbauen ...  
          
        So long,  
         Martin  
        
        -- 
        Besteht ein Personalrat aus nur einer Person, erübrigt sich die Trennung nach Geschlechtern.  
          (aus einer Info des deutschen Lehrerverbands Hessen)  
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        
        1. Salut Martin

          Erneut ein Danke!

          Aber was willst du denn eigentlich erreichen? So wie es aussieht, willst du jeden Request, der nicht auf eine existierende Datei oder ein existierendes Verzeichnis abgebildet werden kann, auf eine einzige Ressource umbiegen.

          Genau, das möchte ich.
          Zur Zeit funktioniert das nicht für das Root-Verzeichnis.
          Wenn ich www.blah.ch eingebe wird leider nicht auf meine Ressource umgebogen,
          sondern ein 403 generiert. Den möchte ich weg haben und stattdessen auf meine Ressource umbiegen lassen.

          1. @@Schorsch:

            nuqneH

            Wenn ich www.blah.ch eingebe

            Wann hörst du endlich mit dem Gefasel von blah.ch auf und beherzigst, was dedlfix schrieb?

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
        2. Salut Martin

          Aber was willst du denn eigentlich erreichen?

          Das habe ich jetzt herausgefunden.
          Meine Frage lautet:

          *Wie biege ich das Root-Verzeichnis um*

          Laut der Doku müsste das mit "RewriteCond %{REQUEST_URI} ^/$" gehen:

          RewriteEngine On
          RewriteBase /

          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_URI} ^/$
          RewriteRule (.*) template/blah.php

          Options -Indexes

          Funktioniert jedoch nicht,
          rufe ich www.blah.ch auf, erhalte ich:
          "You don't have permission to access / on this server."

          Irgendwelche Ideen, woran es liegen könnte?
          Danke im Voraus!

  2. Hi!

    Wenn ich www.blah.ch aufrufe, erhalte ich
    "You don't have permission to access / on this server."

    Wenn ich das aufrufe passiert das nicht.

    Wenn ich www.blah.ch/irgendwas aufrufe, gibt es keine Probleme.

    Ergibt einen 404er. Wenn du nicht diese Domain meintest, nimm bitte einen der für Beispiele vorgesehenen Domainnamen.

    Ich habe herausgefunden, dass es in der .htaccess Datei an dieser Zeile liegt:
    RewriteCond %{REQUEST_FILENAME} !-d

    Diese Zeile kann nicht allein vorkommen, da sie Teil einer RewriteRule ist. Ohne die Kenntnis dieser RewriteRule und ihrer anderen RewriteConds lässt sich nichts weiter sagen, als dass ebenjene RewriteRule nicht ausgeführt wird, wenn der Request auf ein real exisierendes Verzeichnis trifft. Es können dann auch noch alle nachfolgenden Regeln zu dem Problem führen.

    Warum verursacht RewriteCond %{REQUEST_FILENAME} !-d einen "403 Forbidden" ?

    Das macht es nicht allein.

    Wie bringe ich den  "403 Forbidden" ohne auf die Funktionalität von
    RewriteCond %{REQUEST_FILENAME} !-d  verzichten zu müssen?

    In dem Satz fehlt vermutlich ein Teil. Abgesehen davon: Was genau willst du eigentlich erreichen?

    Lo!

    1. Was genau willst du eigentlich erreichen?

      Salut dedlfix

      Vielen Dank für deine Antwort.
      Ich möchte "www.blah.ch" aufrufen, ohne dass ich ein "403 Forbidden" erhalte,
      wobei die Funktionalität von RewriteCond %{REQUEST_FILENAME} !-f und
      RewriteCond %{REQUEST_FILENAME} !-d erhalten bleiben soll.

      Oder anders gesagt:
      Ich möchte eine Ausnahme definieren.
      Diese soll den Root-Aufruf ("www.blah.ch"),
      obwohl dieses Verzeichnis existiert, auch weiterleiten.

      1. Vielen Dank für deine Antwort.

        Gelesen hast du sie aber nicht, oder?

        Ich möchte "www.blah.ch" aufrufen, ohne dass ich ein "403 Forbidden" erhalte,

        Das ist nicht nachvollziehbar - FreeMails.ch ist einwandfrei erreichbar, ich erhalte ein 200 OK