URL amigable de SEO en yii
-
27-10-2019 - |
Pregunta
Necesito una regla para http://example.com/post/view/id/1 URL que se mostrará así http://example.com/post/post_title. En lugar del número de identificación, quiero mostrar el nombre o el título de la publicación.
Mi configuración se ve así:
'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,
),
Solución
necesitas tener una regla que se vea así
'post/<post_title:\w+>'=>'postController/view/title/<post_title>',
Esto solo le dice a la aplicación que reenvíe las solicitudes que comienzan con un post/post_title a la vista de acción del controlador de publicación donde $ _get ['title'] está configurado en post_title ...
Espero que ayude.
Otros consejos
Es una regla simple
'post/<post_title:\w+>' => 'post/view'
Si necesita URL como esta http://example.com/post/some-title-with-hyphen
'post/<post_title:[-\w]+>' => 'post/view'
Y necesita una acción del controlador con $ post_title argumento
public function actionView($post_title) {
...
En valor predeterminado, yii solo retraive la identificación de la publicación, si desea mostrar el título de la publicación, debe acceder al DB usted mismo en una clase de URL personalizada. Hay un ejemplo en el tutorial YII llamado Usar clases de regla de custom-url