¿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 DirectoryIndex
esté configurado correctamente en el .htaccess
archivo raíz. (Esto está predeterminado en index.html
, aunque muchas distribuciones index.php
tambié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.php
archivo en el directorio solicitado (tenga en cuenta la ruta URL relativa) cuando solicita el directorio directamente.
Si no se encuentra el DirectoryIndex
documento (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.