我在我的yii web应用程序中有文章,我想在URL上查看文章 Headers 而不是id,我已经按照以下链接:http://www.yiiframework.com/forum/index.php/topic/43874-urlmanager-show-title-instead-of-id/我将createUrl函数更改为:
Yii::app()->createUrl('home/article',array('id'=>$article->id,'title' => $article->title);
并将以下规则添加到url manager,如下所示:
'<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我想成为
http://localhost/test/article/article-title
先感谢您 .
1 回答
我做了类似的事情,但你不依赖于 Headers 是独特的,甚至不会改变 .
最好不要在URL中至少公开使用自动数字Id,所以你可以这样:
"article/<key:\w{6}>/<title>"
因此,URL将如下:
article/e87qy2/The_book_title_here
您只需忽略 Headers 并使用每篇文章必须唯一的密钥 .当然,字母数字哈希或键与数字ID不是很相似,但至少通过显示您具有自动数字主键,您可以摆脱显示有关数据库的内部信息 .
如果你真的不可避免地希望在网址中只有 Headers ,那么,首先要确保任何新创建的文章都是唯一的,然后只需将其用作查找文章的唯一键 .
避免两个相同的文章可能要求您在末尾添加数字2,3等,以使它们不同 .