Webwolf: htaccess: Zugriff auf nur index.php in root gewähren

Hallo,

Ich habe ein kleines Problem mit .htaccess und hoffe, Ihr könnt mir da weiter helfen.
Gesucht habe ich schon danach, nur leider nichts passendes gefunden, da mein Probleme etwas spezieller ist.
Zugeben muss ich auch, dass ich mich mit htaccess noch nicht so gut auskenne.

########################  
# Deny access to all PHP files  
	<Files *.php>  
		Order Deny,Allow  
		Deny from all  
	</Files>  
  
########################  
# Allow access to all PHP files named index.php  
	<Files index.php>  
		Order Allow,Deny  
		Allow from all  
	</Files>

Was ich hiermit getan habe, dürfte durch die Kommentare klar sein.
Das Problem ist nun, dass ich mehrere index.php Dateien habe und zwar in den einzelnen Unterordnern wie z.B. "config/index.php" oder "layout/index.php".

Mit oben gezeigtem Code in der htaccess-Datei würde ich natürlich auch Zugriff auf diese Dateien gewähren, was nicht sein soll.

Ich hätte gerne gewusst, ob ich das global in der htaccess-Datei lösen kann (per Regex o.ä.), ohne dafür die PHP-Dateien umzubenennen oder die Inhalte dieser Dateien zu ändern.
Global heißt auch, dass ich nicht unbedingt jeden einzelnen Unterordner aufführen möchte, indem sich eine index.php befindet.
RewriteEngine möchte bzw. kann ich leider auch nicht verwenden.

Für Hilfe wäre ich wirklich sehr dankbar.

  1. Tach!

    Das Problem ist nun, dass ich mehrere index.php Dateien habe und zwar in den einzelnen Unterordnern wie z.B. "config/index.php" oder "layout/index.php".
    Mit oben gezeigtem Code in der htaccess-Datei würde ich natürlich auch Zugriff auf diese Dateien gewähren, was nicht sein soll.

    Warum nennst du sie überhaupt index, wenn sie nicht die Funktion eines DirectoryIndex erfüllen? Und wenn du das Zeug in den Unterverzeichnissen nicht vom Webserver ausgeliefert haben möchtest, warum liegt es dann überhaupt innerhalb des DocumentRoot?

    Wie auch immer, ein <Files> gilt zwar auch für alle Unterverzeichnisse, aber es passt immer nur auf Dateinamen. Verzeichnisse (oder Platzhalter dafür) kann man nicht voranstellen, also */index.php als Regel geht nicht. Für alle Unterverzeichnisse eigene Konfigurationen zu erstellen, wäre eine Lösung. Besser ist jedoch, sich Gedanken zu machen, ob die nicht auszuliefernden Dateien nicht anderswo als im DocumentRoot untergebracht werden können.

    dedlfix.

    1. Tach!

      Hallo dedlfix, danke für die schnelle Antwort !

      Warum nennst du sie überhaupt index, wenn sie nicht die Funktion eines DirectoryIndex erfüllen? Und wenn du das Zeug in den Unterverzeichnissen nicht vom Webserver ausgeliefert haben möchtest, warum liegt es dann überhaupt innerhalb des DocumentRoot?

      Dass die Dateien im documentroot liegen, liegt einfach daran, dass ich auf
      die übergeordneten Verzeichnisse kein Zugriff und vorerst auch keine Gelegenheit habe, dies zu ändern. Normalerweise gehe ich genauso vor.

      Die Frage "warum die Dateien index.php heißen" ist definitiv berechtigt.
      Das sollte ich mal ändern.

      Wie auch immer, ein <Files> gilt zwar auch für alle Unterverzeichnisse, aber es passt immer nur auf Dateinamen. Verzeichnisse (oder Platzhalter dafür) kann man nicht voranstellen, also */index.php als Regel geht nicht. Für alle Unterverzeichnisse eigene Konfigurationen zu erstellen, wäre eine Lösung. Besser ist jedoch, sich Gedanken zu machen, ob die nicht auszuliefernden Dateien nicht anderswo als im DocumentRoot untergebracht werden können.

      Schade. Ich werde dann wohl nicht drum rum kommen, den Dateien einen anderen Namen zu verpassen, solange ich nur Zugriff auf den documentroot habe.

      Nochmals Danke.