Подтвердить что ты не робот

Как установить контроллер по умолчанию в yii2

У меня есть UserControler, и я запускаю его на виртуальном сервере http://basic.com/index.php?r=user/index. Как настроить UserController и действие index на значение по умолчанию при переходе на http://basic.com

4b9b3361

Ответ 2

Как уже говорили несколько человек, вам нужно добавить defaultRoute в файл конфигураций.
Вот как это должно выглядеть:

//config/web.php в базовом шаблоне или backend/config/main.php в расширенном

$config = [
    ...
    'components' => [
        ...
    ],
    'params' => $params,
    'defaultRoute' => 'user/index',
];

Ответ 3

Это можно установить в конфигурации, см. Контроллер по умолчанию:

[
    'defaultRoute' => 'main',
]

Но обратите внимание, что это тесно связано с маршрутизацией, которая может быть полностью настроена компонентом urlManager. Затем, если вы хотите, пусть say domain/profile ведет себя как domain/user/profile, тогда эти правила для urlManager могут быть другим способом:

'rules' => array(
    '<action:\w+>' => 'user/<action>', // <-- use UserController by default
    '<controller:\w+>/<id:\d+>' => '<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),

Надеюсь, это поможет кому-то:)

Ответ 4

Откройте файл web.php из папки конфигурации и добавьте следующее:

'defaultRoute' => 'admin'

в массив $config.

enter image description here

Ответ 5

С yii2 я смог сделать это в urlmanager с помощью:

'rules'=> [
        ['pattern'=>'<action>', 'route'=>'controller/<action>'],
]

Ответ 6

Это не ответ на вопрос, однако было бы полезно знать: в yii\web\Application есть свойство catchAll, которое определяется как:

Конфигурация, определяющая действие контроллера, которое должно обрабатывать все пользовательские запросы.

Использование:

'catchAll' => ['controller/action']

Итак, каждый запрос http://basic.com вызывает controller/action

Ответ 7

Попробуйте другие решения... Если они не работают, используйте мой простой трюк...

Просто создайте страницу index.php в корне.

Затем в этом файле напишите этот код:

return header('Location: http://your page location');

Ответ 8

Обратите внимание, что defaultRoute игнорируется, когда strictParsing включен в конфигурации urlManager. Обратитесь к проблеме на GitHub: https://github.com/yiisoft/yii2/issues/5892

В качестве меры рекомендуется использовать следующую конфигурацию:

[
    ...
    'defaultRoute' => 'default/index',
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        ...
        'rules' => [
            ...
            '' => '',   // <- this line should be added
        ],
    ],
    ...
]

Ответ 9

Если 'defaultRoute' не работает - проверьте настройки для 'urlManager'. Возможно, там установлен маршрут по умолчанию.

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [

            '' => 'site/index',  // this line should be chenged to ''=>''.

            '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
        ],
    ],