Задать вопрос
@rudants
Front-end разработчик

При редиректе из контроллера в ссылку попадает «web». Как убрать «web»?

Вызываю следующий метод в контроллере:
return Yii::$app->getResponse()->redirect(['/manager/index/']);


Редирект происходит, но конечная ссылка получается следующего вида:
http://site.com/web/manager/

Если проходить по ссылке, указывая контроллер и экшен (site.com/manager/index), то работает роутинг корректно, никакого "web" в адресе нет.

Как это исправить?

Содержимое web.php:
<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '123',
            'baseUrl' => ''
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'ssl://smtp.yandex.com',
                'username' => 'mail@site.ru',
                'password' => '0000000',
                'port' => '465'
            ]
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            "baseUrl" => "",
            'rules' => [
                "/" => "/app",
                "/manager" => "/manager/index"
            ]
        ]
    ],
    'params' => $params,
    'aliases' => [
        '@manager' => '/manager/',
    ]
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

return $config;


Содержимое .htaccess в корне приложения:
RewriteEngine on
RewriteRule ^(.+)?$ /web/$1


Содержимое .htaccess в web:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
  • Вопрос задан
  • 129 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
web есть изначально и его убирают конфигом сервера или переносом его содержимого в публичную папку. Такого как у Вас не должно было случиться, если до этого правильно убран web. Вариантов много, зависит от ситуации. Скажите, как Вы решили этот вопрос, покажите конфиг сервера, htaccess если это apache? дело явно там.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
return $this->redirect('/manager/index/');
Ответ написан
Комментировать
sanchezzzhak
@sanchezzzhak
Ля ля ля...
'id' => 'test_basic',
    'name'=>'Test.App',
    'basePath' => dirname(__DIR__),
    'defaultRoute' => 'home/index',
    'components' => [
           'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [],
        ],
     ]


покажите ваш базовый конфиг web
и
конфиг ngnix или апача
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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