Народ, вопрос простой, но разобраться не могу самостоятельно. Никак не получается настроить .htaccess на перезапись адреса и одновременно мои правила urlManager'а. Попробую поконкретнее вопрос задать.
Ссылка, которую вводит пользователь: http://localhost/Yii2-advanced-HomeWork/calendar Ссылка, которую надо получить для yii: http://localhost/Yii2-advanced-HomeWork/frontend/web/calendar Здесь calendar - это по правилу urlManager'а контроллер task и экшн index (код ниже добавлю).
В данный момент .htaccess в корне проекта выглядит следующим образом:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/Yii2-advanced-HomeWork/admin
RewriteRule ^admin\/?(.*) /Yii2-advanced-HomeWork/backend/web/$1
RewriteCond %{REQUEST_URI} !^/Yii2-advanced-HomeWork/(frontend/web|backend/web|admin)
RewriteRule (.*) /Yii2-advanced-HomeWork/frontend/web/$1
Тот вариант, который вы видите выше, выталкивает меня на адрес http://localhost/Yii2-advanced-HomeWork/frontend/web/ - открывается контроллер по умолчанию и я попадаю на главную страничку yii. Если откоючить urlManager и писать через параметры всё, то правило работает (?r=task/index). Если убрать htaccess, то по длинному варианту ссылки тоже получится пройти (http://localhost/Yii2-advanced-HomeWork/frontend/web/calendar).
Да, я понимаю, что надо бы перенаправление для сервера на http://localhost/Yii2-advanced-HomeWork/ задать, чтобы он сразу туда смотрел. Но тут уже дело принципа и понимания.
Код urlManager'а:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' =>true,
'rules' => [
'/' => 'site/index',
// Календарь в двух режимах: индекс и отображение конкретного таска
'calendar' => 'task/index',
'calendar/<taskId:\d+>' => 'task/single',
// Все возможные режимы работы модулей
'<module:\w+>' => '<module>/',
'<module:\w+>/<controller:\w+>/<id:\d+>' => '<module>/<controller>',
'<module:\w+>/<controller:\w+>' => '<module>/<controller>', // Правило под вопросом, т.к. нигде не используется
'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' => '<module>/<controller>/<action>',
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
// Наиболее вероятные без модулей
'<controller>/<action><lang:\w+>' => '<controller>/<action>',
'<controller>/<action>' => '<controller>/<action>',
'<controller>' => '<controller>/index',
],
],
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости