Yii2 urlManager редирект с controller/q/w/... на controller/index

Собственно, нужно прописать редирект, где при наличии controllerName в урле(независимо от остальной части урла, вложенности), будет обращение к методу index, контроллера controllerName Сейчас реализовано так: 'controller:news/action:.+' => 'news/index', Однако, происходит редирект с "example.com/news/some/path" на "example.com/news?action=news%..." Этого и нужно избежать


Ответы (1 шт):

Автор решения: phpBear

Вот так у меня сделано для ссылок на страницу активации вида mysite.com/activate/<md5 string>

'rules' => [
            '<controller:activate>/<link:(.+?)' => '<controller>/index',
          ],

В контроллере

  public function actionIndex($link = null) {
  }

Это я к тому, что Вам же нужно передавать в index ту самую остальную часть вложенности т.е some/path поэтому и нужно как-то именовать переменную которая будет передана в actionIndex в которой и будет сидеть some/path

Поэтому в Вашем случае rules будет выглядеть примерно так

'rules' => [
            '<controller:news>/<link:(.+?)' => '<controller>/index',
          ],

А в контроллере вот так

  public function actionIndex($link = null) {
  }

Учтите, что согласно RFC обращение к сайту по URL-ам mysite.com/news?<тут что-то> и mysite.com/news/<тут что-то> и даже mysite.com/news и mysite.com/news/ будут считаться разными и соответственно URLы без / после news под описанное правило не попадут

→ Ссылка