.htaccess перенаправляет подпапки в соответствующий index.php

.htaccess перенаправляет подпапки в соответствующий index.php

Как перенаправить каждый запрос на подпапку на index.php в той же папке?

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

Я добавил .htaccess для каждой подпапки следующим образом:

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

Я хотел бы перенаправить их с помощью одного .htaccess в родительской папке:

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

        subfolder n /
                index.php

PS: все подпапки имеют разные имена и не следуют единому соглашению об именовании.

решение1

Вам просто нужно убедиться, что DirectoryIndexон правильно настроен в корневом .htaccessфайле. (По умолчанию это index.html, хотя многие дистрибутивы index.phpтакже включают его, так что вам часто не нужно ничего делать!)

Например:

DirectoryIndex index.php

Это сообщает Apache (mod_dir) о необходимости поиска index.phpфайла в запрошенном каталоге (обратите внимание на относительный URL-путь) при прямом запросе каталога.

Если DirectoryIndexдокумент (т. е. index.php) не найден, вы получите ошибку 403 Forbidden (при условии, что mod_autoindex включен, а листинги каталогов отключены, т. е. Options -Indexes).

Больше ничего добавлять не нужно. (Если только вы на самом деле не хотите «внешнего перенаправления»?!)

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

Вам не нужно использовать mod_rewrite. На самом деле, это правило ничего здесь не сделает, так как 2-йсостояниеявно исключает запросы к каталогам.

Ссылка:

решение2

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

Я нашел ответ, с помощью этого правила каждая папка перенаправляется на index.php, если файл не существует.

Связанный контент