htaccess: замена середины ссылки

237
30 августа 2018, 00:50

Народ, вопрос простой, но разобраться не могу самостоятельно. Никак не получается настроить .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',
    ],
],
READ ALSO
отправка письма с файлом на почту

отправка письма с файлом на почту

Не приходят письма на почту, вроде и ошибок нет, как не старался изменять, не работаетВот код обработчика может кто подскажет:

248
Добавление записи в MySQL если такой еще нету

Добавление записи в MySQL если такой еще нету

Как добавлять записи в таблицу, только в случае если такой записи еще нету(не учитывая при сравнении столбец автоинкремента)

231
sql полнотекстный поиск выдает ошибку

sql полнотекстный поиск выдает ошибку

При выполнении запроса на полнотекстный поиск выдает ошибку Unknown column 'search' in 'where clause', сам запрос :

293