36

I have UserControler and I run it in virtual server http://basic.com/index.php?r=user/index. How can I set up UserController and action index to be the default when I go to http://basic.com

LihO
  • 37,789
  • 9
  • 89
  • 156
Jackson Tong
  • 646
  • 1
  • 6
  • 17
  • What have you tried? And did you google this: http://www.larryullman.com/2013/02/18/understanding-routes-in-the-yii-framework/ – Philip Pittle Sep 04 '14 at 13:04

9 Answers9

60

Did you try in your config:

'defaultRoute' => 'user/index'

Default Controller

Aivar
  • 1,979
  • 18
  • 17
18

Like few people already said, you need to add defaultRoute in the configurations file.
Here is how it should look:

//config/web.php in basic template or backend/config/main.php in advanced

$config = [
    ...
    'components' => [
        ...
    ],
    'params' => $params,
    'defaultRoute' => 'user/index',
];
d.raev
  • 8,090
  • 8
  • 51
  • 72
12

This can be set within the config, see Default Controller:

[
    'defaultRoute' => 'main',
]

But note that this is closely related to routing, which can be completely customized by urlManager component. Then if you want let's say domain/profile to behave like domain/user/profile then these rules for urlManager might be another way to go:

'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>',
),

Hopefully this will help someone :)

LihO
  • 37,789
  • 9
  • 89
  • 156
3

Open the web.php file from your configuration folder, and add the following:

'defaultRoute' => 'admin'

to your $config array.

enter image description here

Obsidian Age
  • 36,816
  • 9
  • 39
  • 58
xdev
  • 31
  • 2
2

This is not the answer of question, however it might be helpful to know: there is a catchAll property in yii\web\Application which is defined as:

The configuration specifying a controller action which should handle all user requests.

Usage:

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

So, every request to http://basic.com will call controller/action

Ali MasudianPour
  • 13,704
  • 3
  • 57
  • 61
2

Note that defaultRoute is ignored, when strictParsing is set to enabled in the urlManager config. Refer to the issue on GitHub: https://github.com/yiisoft/yii2/issues/5892

The following config is recommended as a measure:

[
    ...
    'defaultRoute' => 'default/index',
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        ...
        'rules' => [
            ...
            '' => '',   // <- this line should be added
        ],
    ],
    ...
]
chintogtokh
  • 746
  • 1
  • 9
  • 21
1

With yii2 I was able to do it in the urlmanager with:

'rules'=> [
        ['pattern'=>'<action>', 'route'=>'controller/<action>'],
]
VeYroN
  • 670
  • 8
  • 17
1

Try the other solutions... If they do not work, then use my simple trick...

Just create an index.php page at the root.

Then, in that file, write this code:

return header('Location: http://your page location');
jacefarm
  • 5,123
  • 5
  • 32
  • 44
0

If 'defaultRoute' don't work - check settings for 'urlManager'. Maybe default route is set there.

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

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

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