Thomas: .htaccess auf Verzeichnis beschränken

Hallo.

Meine Verzeichnisstruktur sieht so aus:
a/b (Verzeichnis b liegt in a)

Nun möchte ich, dass ich Verzeichnis a keine PHP-Dateien ausgeführt werden können. In Verzeichnis b sollen dies aber möglich sein.

.htaccess in Verzeichnis a:
AddType error .php

.htaccess in Verzeichnis b:
AddType application/x-httpd-php .php

Funktioniert leider nicht wie gewünscht. PHP-Dateien in Verzeichnis b werden trotzdem als normaler Text ausgegeben und nicht auf dem Server ausgeführt.

Dann habe ich es vor dem AddType noch mit "RemoveType .php" probiert. Funktioniert aber genauso wenig.

Sinn ist es einfach das Verzeichnis a für PHP-Dateien zu sperren, das darunterliegende aber nicht.

Vielleicht hat jemand eine Idee. Danke.

  1. Hallo Thomas,

    Meine Verzeichnisstruktur sieht so aus:
    a/b (Verzeichnis b liegt in a)
    Nun möchte ich, dass ich Verzeichnis a keine PHP-Dateien ausgeführt werden können. In Verzeichnis b sollen dies aber möglich sein.

    vorausgesetzt Du kannst mod_rewrite nutzen, mappst Du Anfragen mit Endung ".php" im Verzeichnis "b" auf ein anderes Verzeichnis. Lege Dir also ein weiteres Verzeichnis an:

    /
      |
      |-a/
      | |
      | |-b/
      | | |
      | | -keine\_php.txt   | |   | -.htaccess
      |
      -c/     |     keine_txt.php

    ### .htaccess ###  
    RewriteEngine On  
    RewriteRule  /a/b/(.*)\.php  /c/$1.php  
    
    

    (Das habe ich jetzt nicht nochmal getestet. Aber so sollte es sinngemäß zu Deiner .php-Sperre für "a" funktionieren.

    Gruß aus Berlin!
    eddi

    --
    Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
    1. Hallo,

      (Das habe ich jetzt nicht nochmal getestet. Aber so sollte es sinngemäß zu Deiner .php-Sperre für "a" funktionieren.

      Danke. Werde ich gleich mal ausprobieren.
      Ich befürchte nur leider, dass diese "Umleitung" Konsequenzen in den $_SERVER-Variablen nach sich zieht :-/

      1. Re:

        (Das habe ich jetzt nicht nochmal getestet. Aber so sollte es sinngemäß zu Deiner .php-Sperre für "a" funktionieren.

        Danke. Werde ich gleich mal ausprobieren.
        Ich befürchte nur leider, dass diese "Umleitung" Konsequenzen in den $_SERVER-Variablen nach sich zieht :-/

        vermutlich nicht gravierend. Dennoch solltest Du diesen Blödsinn nicht machen. Ich habe mir gerade nochmal Dein Problem angesehen und auch auf einer lokalen Maschine nachvollzogen.

        AddType error .php

        Dateien mit Endung ".php" werden intern an einen Interpreter "error" gesendet. Der Server wird diesen voraussichtlich nicht finden (es sei denn, Du hast in durch Action error %{irgendwas} angelegt), und nimmt dann einen default handle an. Dieses wird durch DefaultType bestimmt. Unkonfiguriert wird das MIME text/plain angenommen, was bedeutet, dass der Quellcode pur an den anfragenden Client serviert wird. Das sollte also absolut unerwünscht sein.

        Was sollte man also machen? Den Zugriff verbieten:

          
        ### .htaccess für Verzeichnis "a"  
        <FilesMatch "php$">  
        	Order deny,allow  
        	Deny  from all  
        </FilesMatch>
        

        Somit ist im Unterverzeichnis "b" einfach gegenteiliges zu machen:

        ### .htaccess für Verzeichnis "b"  
        <FilesMatch "php$">  
        	Order allow,deny  
        	Allow from all  
        </FilesMatch>
        

        (Und den Blödsinn mittels mod_rewrite vergiss einfach mal. Es war ein Schnellschuss zu früher Stunden. ;(

        Gruß aus Berlin!
        eddi

        --
        Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!