myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii как настроить htaccess для api?

Не правильно работает роутинг или не правильная настройка.

При переходе site.ru/api/ выводит корневые папки
При переходе site.ru/api/web/ - выводит site.ru/site/index/
При переходе site.ru/site/index/ - выводит 404.

Не могу понять что не так в моих данных. Для frontend и backend работает как нужно, а для api не хочет...

htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
</IfModule>
 
<IfModule mod_rewrite.c>
    # deal with admin first
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
    RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]

    RewriteCond %{REQUEST_URI} ^/(api)
    RewriteRule ^.*$ api/web/index.php [L]

    RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
    RewriteCond %{REQUEST_URI} ^/(admin)
    RewriteRule ^.*$ backend/web/index.php [L]

    RewriteCond %{REQUEST_URI} ^/(assets|css|js|images)
    RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
    RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
    RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
    RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
    RewriteRule ^(.*)$ frontend/web/$1 [L]

    RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/
    RewriteCond %{REQUEST_URI} !index.php
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ frontend/web/index.php
</IfModule>

urlManager
'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => false,
            'showScriptName' => false,
            'suffix' => '/',
            'rules' => [
                //'/' => 'site/index',
                'auth' => 'site/login',

                'GET profile' => 'profile/index',
                'PUT,PATCH profile' => 'profile/update',

                ['class' => 'yii\rest\UrlRule', 'controller' => 'post'],
            ],
        ],
  • Вопрос задан
  • 1030 просмотров
Решения вопроса 2
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Попробуйте так
RewriteCond %{REQUEST_URI} ^/(api)
RewriteRule ^api(/.*)?$ api/web/$1 [L]
Ответ написан
myks92
@myks92 Автор вопроса, куратор тега Yii
Нашёл решение — пометь вопрос ответом!
# Если запрос начинается с /api, то заменяем на /api/web/
RewriteCond %{REQUEST_URI} ^/api
RewriteRule ^.*$ /api/web/$1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sergeysm128
Добавь в конфиг апи
'request' => [
'baseUrl' => '/api',
],

В таком случае редирект будет работать точно так же как и для админки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы