Я искал свой ответ в 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
.