Как перенаправить каждый запрос на подпапку на 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, если файл не существует.