我正在将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
之类的链接?
答案 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