У меня есть UserControler
, и я запускаю его на виртуальном сервере http://basic.com/index.php?r=user/index. Как настроить UserController
и действие index
на значение по умолчанию при переходе на http://basic.com
Как установить контроллер по умолчанию в yii2
Ответ 1
Пробовал ли вы в вашем конфиге:
'defaultRoute' => 'user/index'
Ответ 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
.
Ответ 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>',
],
],