SEO дружественный URL в Yii - PullRequest
       37

SEO дружественный URL в Yii

6 голосов
/ 03 декабря 2011

Мне нужно правило для http://example.com/post/view/id/1 URL, которое будет отображаться так: http://example.com/post/post_title. Вместо идентификатора я хочу отобразить название поста или заголовок.

Мой конфиг выглядит так:

 'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(             
            //'<controller:\w+>/<id:\d+>'=>'<controller>/view',
            //'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            //'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
                    'showScriptName'=>false,
    ),

Ответы [ 3 ]

3 голосов
/ 14 мая 2012

вам нужно иметь правило, которое выглядит так

'post/<post_title:\w+>'=>'postController/view/title/<post_title>',

Это просто говорит приложению пересылать запросы, которые начинаются с post / post_title, в actionView пост-контроллера, где $ _GET ['title'] имеет значение post_title ...

Надеюсь, это поможет.

3 голосов
/ 27 декабря 2014

Это простое правило

'post/<post_title:\w+>' => 'post/view'

Если нужен URL-адрес, подобный этому http://example.com/post/some-title-with-hyphen

'post/<post_title:[-\w]+>' => 'post/view'

И вам нужно действие контроллера с аргументом $ post_title

public function actionView($post_title) {
    ...
1 голос
/ 03 декабря 2011

по умолчанию, Yii извлекает только идентификатор записи, если вы хотите отобразить заголовок записи, вам нужно получить доступ к БД самостоятельно в правилах пользовательского класса Url. В руководстве по yii есть пример using-custom-url-rule-classes

...