.htaccess redirige subcarpetas al index.php correspondiente

.htaccess redirige subcarpetas al index.php correspondiente

¿Cómo puedo redirigir cada solicitud de una subcarpeta a index.php en la misma carpeta?

myserver.com/folder/subfolder1/test   redirected to   folder/subfolder1/index.php
myserver.com/folder/subfolder2/test   redirected to   folder/subfolder2/index.php
...

Agregué un .htaccess para cada subcarpeta como este:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA] 

Me gustaría redirigirlos con un .htaccess en la carpeta principal:

Folder/
        .htaccess    <-- one redirection here
        subfolder1/
                index.php
        subfolder2/
                index.php
        subfolder3/
                index.php
          ...  

        subfolder n /
                index.php

PD: todas las subcarpetas tienen nombres diferentes y no siguen una convención de nomenclatura.

Respuesta1

Sólo necesita asegurarse de que DirectoryIndexesté configurado correctamente en el .htaccessarchivo raíz. (Esto está predeterminado en index.html, aunque muchas distribuciones index.phptambién lo incluyen, por lo que a menudo no es necesario hacer nada).

Por ejemplo:

DirectoryIndex index.php

Esto le dice a Apache (mod_dir) que busque un index.phparchivo en el directorio solicitado (tenga en cuenta la ruta URL relativa) cuando solicita el directorio directamente.

Si no se encuentra el DirectoryIndexdocumento (es decir, index.php), obtendrá un 403 Prohibido (suponiendo que mod_autoindex esté habilitado y los listados de directorios estén deshabilitados, es decir, Options -Indexes).

No hay nada más que necesites agregar. (¡¿A menos que realmente quieras una "redirección externa"?!)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA]

No es necesario utilizar mod_rewrite. De hecho, esta regla no hará nada aquí de todos modos, ya que el 2do.condiciónexcluye explícitamente las solicitudes a directorios.

Referencia:

Respuesta2

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+)/.*$ $1/index.php [L,QSA]

Encontré la respuesta, con esta regla cada carpeta se redirige a index.php si el archivo no existe.

información relacionada