Yii2 友好的 url 不起作用

Yii2 friendly urls doesn't work

我正在使用 Yii2 高级版和 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 中无效。怎么了? 谢谢

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

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

另请阅读有关 路由和 URL 创建 http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#routing

的 Yii2 文档

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

因此您的 rules 将是:

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

您可以 运行 通过 link @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 ...
],

希望有用。

祝你好运,玩得开心。

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

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