目前访问我们各个页面的url地址看上去比较丑陋,比如说文章显式页面的地址是
/index.php?r=post/show&id=1
在本节中,我们讲述如何使页面地址看上去更漂亮,对SEO更友好。我们目标是在应用中可以使用如下的地址:
- /index.php/tag/yii: 所有有使用yii标签的文章列表页面;
- /index.php/posts: 最新文章的列表页面
- /index.php/post/1: id为1的文章内容页面
- /index.php/post/update/1: id为1的文章的更新界面
为了实现我们的目标,我们需要如下修改应用的配置文件。
- return array(
- ......
- 'components'=>array(
- ......
- 'urlManager'=>array(
- 'urlFormat'=>'path',
- 'rules'=>array(
- 'tag/<tag>'=>'post/list',
- 'posts'=>'post/list',
- 'post/<id:\d+>'=>'post/show',
- 'post/update/<id:\d+>'=>'post/update',
- ),
- ),
- ),
- );
在上面的代码中,我们通过设置urlFormat属性为path,并添加了规则,来配置一个urlManager组件。
根据这些规则,urlManager解析和创建符合希望格式的URL。例如第一个规则表示。如果url /index.php/tag/yii 被请求。urlManager组件负责把请求分派到post/list,并产生一个tag参数,其值为yii。另一方面,当建立一个URL post/list,并有参数tag时。urlManager组件同样会根据规则产生所希望的URL:/index.php/tag/yii.因此,我们说urlManager是个双向的地址管理。
urlManager组件可已经更进一步的美化我们地址。比如在地址中隐藏index.php。添加后缀.html。我们可以很容易的通过在应用的配置文件中配置不同的属性来实现这些特性。详细的情况,请参看手册