Человекопонятные URL
====================

URL, связывающие различные страницы нашего приложения в настоящее время, выглядят уродливо. Например, URL для страницы, показывающей запись:

~~~
/index.php?r=post/show&id=1&title=A+Test+Post
~~~

В этом разделе мы опишем, как украсить URL и сделать их SEO-ориентированными.
Наша цель состоит в том, чтобы использовать следующие URL в приложении:

 1. `/index.php/posts/yii`: ведёт на страницу, отображающую список записей с тэгом `yii`;
 2. `/index.php/post/2/A+Test+Post`: ведёт на страницу с полным текстом записи с ID равным 2 и заголовком `A Test Post`;
 3. `/index.php/post/update?id=1`: ведёт на страницу редактирования записи с ID равным 1.

Стоит отметить, что во втором случае мы включили заголовок в URL. Сделано это прежде
всего для SEO. Считается, что поисковые машины могут индексировать слова в URL.

Для достижения нашей цели, изменим
[конфигурацию приложения](/doc/guide/ru/basics.application#application-configuration)
следующим образом:

~~~
[php]
return array(
	…
	'components'=>array(
		…
		'urlManager'=>array(
			'urlFormat'=>'path',
			'rules'=>array(
                'post/<id:\d+>/<title:.*?>'=>'post/view',
                'posts/<tag:.*?>'=>'post/index',
                'post/update/<id:\d+>'=>'post/update',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
			),
		),
	),
);
~~~

В коде выше мы настраиваем компонент [urlManager](/doc/guide/ru/topics.url),
устанавливая его свойство `urlFormat` в значение `path` и добавляя несколько
правил маршрутизации.

Правила используются компонентом `urlManager` для разбора и создания URL в
желаемом формате. Например, второе правило говорит, что, если запрошен URL
`/index.php/posts/yii`, компонент `urlManager` должен послать запрос по
[маршруту](/doc/guide/ru/basics.controller#route) `post/index` и создать
GET-параметр `tag` со значением `yii`. С другой стороны, при создании URL с
маршрутом `post/index` и параметром `tag`, компонент `urlManager` будет также
использовать это правило для создания желаемого URL `/index.php/posts/yii`.
Поэтому мы называем компонент `urlManager` двухсторонним менеджером URL.

Компонент `urlManager` может и далее украшать наши URL, например, сокрытием
части `index.php` в URL или созданием суффикса `.html`. Мы можем легко получить
эти особенности, конфигурируя различные свойства компонента `urlManager` в
конфигурации приложения. За деталями обратитесь к разделу
[красивые адреса URL](/doc/guide/ru/topics.url) руководства.