2016-07-21 14 views
0

我有我的yii web应用程序的文章,我想查看文章标题,而不是id在url,我跟着这个链接: http://www.yiiframework.com/forum/index.php/topic/43874-urlmanager-show-title-instead-of-id/ 我改变createUrl功能是:查看文章标题的URL而不是id在yii 1 SEO的漂亮的网址应用程序

Yii::app()->createUrl('home/article',array('id'=>$article->id,'title' => $article->title); 

,并添加以下规则如下网址经理:

 '<action:\w+>'=>'home/<action>', 
      '<action:\w+>/<id:\d+>'=>'home/<action>', 
      '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
       'article/<id>/<title>'=>'home/article/view/' 

文章网址现在想: http://localhost/test/article?id=6我はnt是
http://localhost/test/article/article-title

谢谢你提前。

+0

你的文章标题是独一无二的还是什么 –

+0

不,它不。 –

回答

1

我做了类似的事情,但您不想避免使用独特的ID来查找您的文章,因为您不能依赖标题是独一无二的,甚至不会发生变化。
这是很好的做法,不是在URL至少在公开场合使用autonumeric标识,所以你可以是这样的:
"article/<key:\w{6}>/<title>"

因此,网址会像:article/e87qy2/The_book_title_here而你只是忽略了标题,并使用密钥对于每篇文章必须是唯一的。
当然,字母数字散列或键与数字ID没有太大区别,但至少通过显示您拥有自动数字主键,可以摆脱显示有关数据库的内部信息。

如果你确实真的不可避免地想要在url中拥有标题,那么首先要确保任何新创建的文章都是唯一的,然后将其用作唯一键来查找文章。
避免两个平等的文章可能需要在最后添加数字2,3等,以使它们不同。