Yii2友好的网址不起作用

时间:2016-07-23 18:28:45

标签: yii2 yii2-advanced-app

我正在使用Yii2 advanced和Nginx。我的网址管理员:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'test1' => 'page/view?id=1',
        'test2' => 'page/view?id=2',
    ],
],

mydomain.com/page/view?id=1 - 它有效

mydomain.com/test1 - 不起作用。 404错误

它在Yii1中有效但在Yii2中不起作用。怎么了? 感谢。

3 个答案:

答案 0 :(得分:1)

您可以在defaults属性中设置默认参数数组。

'rules' => [
    [
        'pattern' => 'test1',
        'route' => 'page/view',
        'defaults' => ['id' => 1],
    ],
],

答案 1 :(得分:0)

在规则中使用正则表达式参数:

'rules' => [
    'test/<id:\d+>' => 'page/view',
],

另请参阅有关路由和网址创建的Yii2文档 http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#routing

答案 2 :(得分:0)

urlManager配置中,您应该只定义控制器和操作。

所以你的rules将是:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'test1' => 'page/view',
        'test2' => 'page/view',
    ],
],

您可以通过链接@baseUrl/test1?id=1@baseUrl/test2?id=2投放,或在您的视图中使用此urlHelper

Html::a('test1', \yii\helpers\Url::to(['test1', 'id' => 1]))

如果您希望test1显示包含id=1的网页视图,test2将显示id=2,您应该像这样配置规则:

'rules' => [
     //other rules ...
     [
         'pattern' => 'test<id:\d+>',
         'route' => 'page/view',
     ],
     //other rules ...
],

希望这有用。

Goodluck,玩得开心。