Wie kann ich jede Anfrage für einen Unterordner auf die index.php im selben Ordner umleiten?
myserver.com/folder/subfolder1/test redirected to folder/subfolder1/index.php
myserver.com/folder/subfolder2/test redirected to folder/subfolder2/index.php
...
Ich habe für jeden Unterordner eine .htaccess-Datei wie folgt hinzugefügt:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA]
Ich möchte sie mit einer .htaccess im übergeordneten Ordner umleiten:
Folder/
.htaccess <-- one redirection here
subfolder1/
index.php
subfolder2/
index.php
subfolder3/
index.php
...
subfolder n /
index.php
PS: Alle Unterordner haben unterschiedliche Namen und folgen keiner Namenskonvention.
Antwort1
Sie müssen nur sicherstellen, dass es DirectoryIndex
in der Stammdatei richtig eingestellt ist .htaccess
. (Die Standardeinstellung ist index.html
, obwohl viele Distributionen index.php
auch binden, sodass Sie oft nichts tun müssen!)
Zum Beispiel:
DirectoryIndex index.php
Dies weist Apache (mod_dir) an, index.php
im angeforderten Verzeichnis nach einer Datei zu suchen (beachten Sie den relativen URL-Pfad), wenn Sie das Verzeichnis direkt anfordern.
Wenn das DirectoryIndex
Dokument (z. B. index.php
) nicht gefunden wird, erhalten Sie eine 403-Meldung (vorausgesetzt, mod_autoindex ist aktiviert und Verzeichnislisten sind deaktiviert, z. B. Options -Indexes
).
Mehr braucht ihr nicht hinzuzufügen. (Es sei denn, ihr wollt tatsächlich eine „externe Weiterleitung“?!)
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php [L,QSA]
Sie müssen mod_rewrite nicht verwenden. Tatsächlich wird diese Regel hier sowieso nichts bewirken, da die 2.Zustandschließt Anfragen an Verzeichnisse explizit aus.
Referenz:
Antwort2
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/.*$ $1/index.php [L,QSA]
Ich habe die Antwort gefunden; mit dieser Regel wird jeder Ordner zu seiner index.php umgeleitet, wenn die Datei nicht existiert.