如何在yii2 url中更改/更改 - 以执行特定操作

时间:2017-12-09 22:40:41

标签: yii2 yii-url-manager

我正在将wordpress网站重写为yii2。 出于某些原因,我必须保留以前的帖子网址! 他们就是那样的事情

https://example.com/blog-thenameofpost

所以我创建了一个Blog控制器,我就这样有了这个链接

https://example.com/blog/view?id=thenameofpost

我不知道如何编写urlManager规则来执行此操作。 我只是添加这个规则

    '<controller:\w+>/<id:\d+>' => '<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',

现在这个链接 https://example.com/blog/view?id=thenameofpost  用这样的东西打开:
https://example.com/blog/thenameofpost

是否有任何规则可以打开类似https://example.com/blog/thenameofpost之类的链接?

1 个答案:

答案 0 :(得分:1)

如果您要为https://example.com/blog-thenameofpost创建规则,可以添加以下规则。

'blog-<id>' => 'blog/view',

左侧部分是您在地址栏中实际看到的内容。您可以使用< >来指示参数。因此,此规则将匹配以blog-开头的所有内容,然后将其后的部分视为id参数。正确的部分是应该将此请求路由到的位置。因此,此请求最终会出现在BlogController并致电actionView($id),其中$id将设置为<id>部分;在示例URL的情况下, thenameofpost

https://example.com/blog/thenameofpost的规则是

'blog/<id>' => 'blog/view'

其他信息: 在参数部分(左侧)中,您可以添加用于匹配参数的其他信息。因此,<id:\d+>只会匹配数字,因为de \d+部分。有关详细信息,请阅读文档:http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html# $ rules-detail