.htaccess redireciona subpastas para o index.php correspondente

.htaccess redireciona subpastas para o index.php correspondente

Como posso redirecionar cada solicitação de uma subpasta para index.php na mesma pasta

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

Adicionei um .htaccess para cada subpasta assim:

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

Gostaria de redirecioná-los com um .htaccess na pasta pai:

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

        subfolder n /
                index.php

PS: todas as subpastas têm nomes diferentes e não seguem uma convenção de nomenclatura.

Responder1

Você só precisa ter certeza de que DirectoryIndexestá configurado corretamente no .htaccessarquivo raiz. (O padrão é index.html, embora muitas distros index.phptambém incluam, então muitas vezes você não precisa fazer nada!)

Por exemplo:

DirectoryIndex index.php

Isso diz ao Apache (mod_dir) para procurar um index.phparquivo no diretório solicitado (observe o caminho URL relativo) quando você solicitar o diretório diretamente.

Se o DirectoryIndexdocumento (ou seja, index.php) não for encontrado, você receberá um 403 Forbidden (assumindo que mod_autoindex esteja ativado e as listagens de diretório estejam desativadas, ou seja, Options -Indexes).

Não há mais nada que você precise adicionar. (A menos que você realmente queira um "redirecionamento externo"?!)

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

Você não precisa usar mod_rewrite. Na verdade, esta regra não fará nada aqui de qualquer maneira, desde o segundodoençaexclui explicitamente solicitações para diretórios.

Referência:

Responder2

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

Encontrei a resposta, com esta regra toda pasta é redirecionada para index.php se o arquivo não existir.

informação relacionada