URL Friendly SEO in Yii
-
27-10-2019 - |
Domanda
Ho bisogno di una regola per http://example.com/post/view/id/1 URL che verrà visualizzato in questo modo http://example.com/post/post_title. Invece del numero ID che desidero visualizzare il nome o il titolo del post.
La mia configurazione sembra così:
'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,
),
Soluzione
Devi avere una regola che assomiglia a questa
'post/<post_title:\w+>'=>'postController/view/title/<post_title>',
Questo dice solo all'app di inoltrare le richieste che iniziano con un post/post_title sull'ActionView del post controller in cui $ _get ['title'] è impostato su post_title ...
Spero possa aiutare.
Altri suggerimenti
È una semplice regola
'post/<post_title:\w+>' => 'post/view'
Se hai bisogno di URL come questo http://example.com/post/some-title-with-hyphen
'post/<post_title:[-\w]+>' => 'post/view'
E hai bisogno di un'azione controller con argomento $ post_title
public function actionView($post_title) {
...
In default, YII ritira solo l'ID post, se si desidera visualizzare il titolo post, è necessario accedere al DB te stesso in una regola di classe URL personalizzata. C'è un esempio nel tutorial YII chiamato Utilizzando Classe-Rolle-Url-Rule