Я использую расширенный шаблон. Я создал все свои действия на SiteController, поэтому все мои URL-адреса - domain.com/site/something, и мне нужно удалить слово «сайт» из URL-адреса, чтобы оно было domain.com/something.Yii2: удалить контроллер из URL
Я попытался следующие правила, основанные на this question
'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',
),
],
также попытался это на основе this other question:
'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',
),
],
но и не не работает. Я получаю 404, когда я печатаю domain.com/something. Я также пробовал без первого /, и он тоже не работал.
Любые мысли?
СПАСИБО! Это сработало отлично! У вас будет ссылка, где я могу прочитать разницу между \ w + и (. *), Потому что это изменение сделало трюк. –
Здесь вы можете найти отличное объяснение reg expr: https://regex101.com/. \ w + соответствует любой букве, номеру или подчеркиванию. * улаживает ноль или более символов. Возможно, ваше действие состоит из нескольких слов. –