yii2 basic
版当中,我使用RESTful
,同时我在Module
下想建立个admin
模块,urlManager
配置enableStrictParsing
为 true
的情况下,访问首页或admin
模块均报404 Not Found
访问RESTful
的资源能正常输出。
当enableStrictParsing
设置为 false
后就正常了,但是访问RESTful
资源,比如 www.abc.com/merchant, www.abc.com/merchants
后面有无“s
”跟都可以访问,enableStrictParsing
为true
是必须有“s
”的。纠结,如何配置适当。
urlManager
配置如下:
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['merchant']],
],
]
我写restful enableStrictParsing
这个参数一般不写,也就是 false
。
这个参数为 true
的时候就会执行严格的URL管理。
为什么有s
,首先你要了解 urlManager
的 rules
。
就拿 GetYii 来说:
rules' => [
'member/<username:\w+>' => 'user/default/show',
],
这条路由规格不能写成
rules' => [
'user/<username:\w+>' => 'user/default/show',
],
简单理解,就是前后两个单词是不能相同的,为了方便区分 restful 默认用复数形式。
当然你也可以用这种方式控制你的URL:
rules' => [
'PUT,PATCH users/<id>' => 'user/update',
'DELETE users/<id>' => 'user/delete',
'GET,HEAD users/<id>' => 'user/view',
'POST users' => 'user/create',
'GET,HEAD users' => 'user/index',
'users/<id>' => 'user/options',
'users' => 'user/options',
]
@forecho 谢谢,Yii2这一块的框架代码还没看呢,刚测试了配置,正如你所说,被默认复数区分了。