Блог

Уроки Yii2: Роутинг и Friendly URL (ЧПУ)

5 years ago
12K
Sergei Nikonov
С вами Сергей Никонов. В прошлом уроке я затронул тему контроллеров, показал как создать свою страницу с помощью фреймворка Yii2 и после выхода прошлого урока Yii2, я стал получать вопросы по поводу внешнего вида ссылок и как эти стандартные Yii2 ссылки превратить в такие красивые ссылки. Такие ссылки называют человекопонятные ссылки или Friendly URL.
 

Смотрите видеоурок Yii2: Роутинг и Friendly URL (ЧПУ)

 
Те кто ранее проходил мой курс по фреймворку Codeigniter знают о таком важном понятии как Friendly URL или человекопонятная ссылка. 
 
Использование человекопонятных ссылок на вашем сайте полезно не только из-за красивого внешнего вида ссылки, но и является одним из важных правил в продвижении вашего сайта в поисковых системах. И в этом уроке Yii2 я покажу как настроить Friendly URL в фреймворке Yii2.
 
Yii2 ЧПУ (friendly URL) | Уроки Yii2
 

Как настроить в Yii2 ЧПУ ссылки (Friendly URL)

В фреймворке Yii2 очень просто настроить человокопонятные ссылки. Для включения Friendly URL в Yii2 вам нужно открыть конфиг frontend-части и в блок components добавить следующую запись:
 
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
],
 
Сейчас внешний вид ссылок улучшился, но мы видим название контроллера в ссылке - site:
http://frontend.test/site/about
 
Давайте избавимся от него. 
 
Для этого в массив urlManager добавим еще один, под названием rules. В rules мы будем описывать правила отображения ссылок. И начнем с главной страницы и страницы about
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '/' => 'site/index',
        'about' => 'site/about',
    ],
],

Ссылки этих двух страниц стали выглядеть красивее, но если мы сейчас перейдем на страницу about и введем url как раньше http://frontend.test/site/about тогда мы увидим, что страница about все еще открывается.

С точки зрения продвижение сайта - это не очень хорошо, так как у нас одна и та же страница доступна по двум разным ссылкам. Давайте сделаем так, чтобы наши страницы открывались только исходя из наших правил. Сделать это очень просто.

Для включения такой возможности, нам нужно прописать в urlManager такую запись:

'enableStrictParsing' => true,
и если сейчас мы откроем страницу http://frontend.test/site/about вы увидите ошибку 404, которая обозначает, что данная страница не найдена, но если мы перейдем по ссылки из наших правил, страница about откроется.
 
Если по какой либо причине вы хотите, чтобы ваша страница открывалась с двух разных url, вы можете прописать и такие правила. Давайте рассмотрим такую возможность на созданной странице в прошлом уроке Yii2.
 
Создадим правила для этой страницы:
'hello' => 'site/hello',

И теперь, если мы хотим, чтобы страница открывалась не по ссылке hello, а например по ссылке hi, мы можем внести такую правку:

'hi' => 'site/hello',

Также мы можем написать правило, чтобы страница открывалась по двум ссылкам:

'hi|hello' => 'site/hello',
 
В блоке rules можно задавать и более сложные правила и к этим правилам мы еще вернемся в последующих уроках. 
 
В качестве домашнего задания попробуйте самостоятельно дописать остальные правила для страниц контроллера SiteController и если вдруг не получится.
 
Посмотрите как могут выглядеть эти правила:
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'enableStrictParsing' => true, // Следовать только правилам ниже
    'rules' => [
        '/' => 'site/index',
        'hi|hello' => 'site/hello',
        'about' => 'site/about',
        'contact' => 'site/contact',
        'login' => 'site/login',
        'logout' => 'site/logout',
        'captcha' => 'site/captcha',
        'signup' => 'site/signup',
        'request-password-reset' => 'site/request-password-reset',
        'reset-password' => 'site/reset-password',
    ],
],

Если у вас возникают вопросы, задать вы их можете в комьюнити FructCode, где другие участники сообщества, помогут решить ту или иную проблему.

Научиться программировать с помощью фреймворка Yii2 вы можете на сайте FructCode.

Подпишитесь на канал FructCode в YouTube, чтобы не пропускать новые видео!

С вами был Сергей Никонов и увидимся в следующих уроках Yii2.