Человекопонятные 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.

Для достижения нашей цели, изменим конфигурацию приложения следующим образом:

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, устанавливая его свойство urlFormat в значение path и добавляя несколько правил маршрутизации.

Правила используются компонентом urlManager для разбора и создания URL в желаемом формате. Например, второе правило говорит, что, если запрошен URL /index.php/posts/yii, компонент urlManager должен послать запрос по маршруту 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 руководства.


Зачем реклама?