Model view controller Yii2:从URL中删除控制器

Model view controller Yii2:从URL中删除控制器,model-view-controller,yii2,yii2-advanced-app,friendly-url,pretty-urls,Model View Controller,Yii2,Yii2 Advanced App,Friendly Url,Pretty Urls,我使用的是高级模板。 我在SiteController上创建了我的所有操作,因此我的所有url都是domain.com/site/something,我需要从url中删除“site”一词,使其成为domain.com/something 我尝试了以下规则基于 'urlManager'=>[ 'class'=>'yii\web\UrlManager', 'showScriptName'=>false, “enablePrettyUrl”=>true, '规则'=>数组( “/: 'urlManag

我使用的是高级模板。 我在SiteController上创建了我的所有操作,因此我的所有url都是domain.com/site/something,我需要从url中删除“site”一词,使其成为domain.com/something

我尝试了以下规则基于

'urlManager'=>[
'class'=>'yii\web\UrlManager',
'showScriptName'=>false,
“enablePrettyUrl”=>true,
'规则'=>数组(
“/:

'urlManager'=>[
'class'=>'yii\web\UrlManager',
'showScriptName'=>false,
“enablePrettyUrl”=>true,
'baseUrl'=>'http://localhost/websites/transcita/app/frontend/web',
'规则'=>数组(
[
'模式'=>'',
“路由”=>“站点/”
],
[
“模式”=>“/”,
“路由”=>“站点/”
],
“/noticia/”=>“站点/noticia”,
),
],
但两者都不起作用。当我键入domain.com/something时,我得到了404。 我也试过不用第一个,但也没用

有什么想法吗?

试试:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'rules' => [

        // ...

        // last rule
        '<action:(.*)>' => 'site/<action>',
    ],
], 
'urlManager'=>[
“enablePrettyUrl”=>true,
'showScriptName'=>false,
'enableStrictParsing'=>false,
“规则”=>[
// ...
//最后一条规则
''=>'站点/',
],
], 
另一种方式:

'rules' => [
    '<alias:\w+>' => 'site/<alias>',
],
“规则”=>[
''=>'站点/',
],

谢谢!这非常有效!您是否有一个链接,我可以从中了解到\w+和(.*)之间的区别,因为这一更改起到了作用。在这里,您可以找到reg expr:。\w+与任何字母、数字或下划线匹配。*匹配零个或多个字符。您的操作可能由多个单词组成。这种方式更好,因为第一个答案为所有其他控制器(而不是SiteController)提供404错误
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => false,
    'rules' => [

        // ...

        // last rule
        '<action:(.*)>' => 'site/<action>',
    ],
], 
'rules' => [
    '<alias:\w+>' => 'site/<alias>',
],