Есть Apache 2.4.2 на Debian Linux 9.Апач ставил из стандартного репозитария, mod_rewrite тоже.
Корень сайта находится по пути /var/www/mysite.
На этот каталог настроен виртуальный хост local-mysite.ru.
Для начала положил в корень index.php с вызовом phpinfo(). Проверил вывод: в разделе Loaded Modules вижу mod_rewrite. Это хорошо.
Далее развернул тестовый сайт, его стартовый скрипт открывается по такому URL:
http://local-mysite.ru/appadv/frontend/web
и по такому тоже, само собой, открывается:
http://local-mysite.ru/appadv/frontend/web/index.php
Теперь мне нужно, чтобы когда в браузере открывается http://local-mysite.ru, следовал переход на вышеуказанный URL.
Для этого я написал .htaccess с таким содержимым:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(appadv/frontend/web)
RewriteRule (.*) /appadv/frontend/web/$1
# Если файл или каталог не существует, идём к /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /appadv/frontend/web/index.php
Поверил его в онлайн-тестировщике http://htaccess.madewithlove.be. Там преобразование идет правильное.
Но на моем хосте преобразования URI не происходит!
Для отладки отредактировал опцию в файле /etc/apache2/apache2.conf, чтобы видеть сообщения о редиректах:
LogLevel warn rewrite:trace4
Я уже не знаю куда копать.
UPD1: Если это важно: по URL http://local-mysite.ru сейчас Апач отдает список файлов. А должен быть редирект.
UPD2: Модуль существует, и загружен:
# apachectl -M | grep rew
rewrite_module (shared)