Назад | Перейти на главную страницу

.htaccess отправлять запросы в подпапку index.php

Я искал свой ответ в StackOverflow, но ничего из того, что я видел, похоже, не работает.

У меня есть структура, которая отправляет все запросы в index.php файл. Все работает, когда я устанавливаю его в корень виртуального хоста:

http://example.com/
http://example.com/home
http://example.com/home/index

Проблема возникает, когда я пытаюсь установить фреймворк в подкаталог, например:

http://example.com/blog/

Запросы типа:

http://example.com/blog/home
http://example.com/blog/home/index

Все эти запросы следует отправлять в файл index.php, который находится в / blog.

Моя текущая настройка:

http://example.com/index.php - Этот файл просто распечатывает «мы находимся в корне виртуального хоста». Фреймворк туда не ставится.

http://example.com/blog - Это отлично работает

Когда я пытаюсь добраться до http://example.com/blog/home Получаю рут index.php файл, а не рамки. Получаю сообщение «мы в корне виртуального хоста».

У меня есть следующие .htaccess файл, расположенный в http://example.com/blog/.htaccess.

RewriteEngine on

Options Indexes FollowSymLinks -MultiViews

RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Любая помощь приветствуется.

Ответ, который устранил мою проблему:

RewriteEngine On

Options Indexes FollowSymLinks

RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Похоже, что Multiviews это сбрасывает.

Запросы, которые вы тестируете, относятся к элементам, которых на самом деле нет в каталоге? Эти строки:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Это означает, что любые запросы к существующему файлу или каталогу не будут перезаписаны.

RewriteBase /blog

Попробуйте без косой черты.

RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Означает "если не js или ico ..." вперед index.php.

Итак, по сути, ваш /blog уровень .htaccess говорит, что если это не изображение или файл CSS, перенаправьте его на /blog/index.php.