Ian*_*one 2 model-view-controller friendly-url pretty-urls yii2 yii2-advanced-app
我正在使用高级模板。我在SiteController上创建了所有操作,因此所有URL都是domain.com/site/something,并且需要从URL中删除“ site”一词,因此它将是domain.com/something。
我根据这个问题尝试了以下规则
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => array(
'/<action:\w+>/<id:\d+>' => 'site/<action>',
'/<action:\w+>' => 'site/<action>',
'/noticia/<slug>' => 'site/noticia',
),
],
Run Code Online (Sandbox Code Playgroud)
也基于另一个问题尝试了此操作:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'showScriptName' => false,
'enablePrettyUrl' => true,
'baseUrl' => 'http://localhost/websites/transcita/app/frontend/web',
'rules' => array(
[
'pattern' => '<action:\w+>',
'route' => 'site/<action>'
],
[
'pattern' => '<action:\w+>/<id:\d+>',
'route' => 'site/<action>'
],
'/noticia/<slug>' => 'site/noticia',
),
],
Run Code Online (Sandbox Code Playgroud)
但两者都不起作用。输入domain.com/something时得到404。我也尝试了没有第一个/的情况,但也不起作用。
有什么想法吗?
小智 8
其它的办法:
'rules' => [
'<alias:\w+>' => 'site/<alias>',
],
Run Code Online (Sandbox Code Playgroud)
尝试:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
// ...
// last rule
'<action:(.*)>' => 'site/<action>',
],
],
Run Code Online (Sandbox Code Playgroud)