0 关注者

美化 URL

链接博客应用程序各个页面的 URL 目前看起来很丑。例如,显示帖子的页面的 URL 如下所示

/index.php?r=post/show&id=1&title=A+Test+Post

在本节中,我们将描述如何美化这些 URL 并使其对 SEO 友好。我们的目标是能够在应用程序中使用以下 URL

  1. /index.php/posts/yii:链接到显示带有标签 yii 的帖子列表的页面;
  2. /index.php/post/2/A+Test+Post:链接到显示 ID 为 2 且标题为 A Test Post 的帖子的详细信息的页面;
  3. /index.php/post/update?id=1:链接到允许更新 ID 为 1 的帖子的页面。

请注意,在第二种 URL 格式中,我们在 URL 中包含了帖子标题。这主要是为了使 URL 对 SEO 友好。据说,搜索引擎在对 URL 进行索引时也可能会尊重 URL 中出现的词语。

为了实现我们的目标,我们修改了 应用程序配置,如下所示:

return array(
    ......
    'components'=>array(
        ......
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                'post/<id:\d+>/<title:.*?>'=>'post/view',
                'posts/<tag:.*?>'=>'post/index',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
    ),
);

在上面,我们通过设置其 urlFormat 属性为 path 并添加一组 rules 来配置 urlManager 组件。

这些规则由 urlManager 用于解析和创建所需格式的 URL。例如,第二条规则说,如果请求 URL /index.php/posts/yii,则 urlManager 组件应负责将请求调度到 路由 post/index 并生成一个值为 yiitag GET 参数。另一方面,在创建具有路由 post/index 和参数 tag 的 URL 时,urlManager 组件也将使用此规则生成所需的 URL /index.php/posts/yii。为此,我们说 urlManager 是一个双向 URL 管理器。

urlManager 组件可以进一步美化我们的 URL,例如在 URL 中隐藏 index.php,在 URL 中附加后缀(如 .html)。我们可以通过在应用程序配置中配置 urlManager 的各种属性轻松获得这些功能。有关更多详细信息,请参考 指南

发现错别字或您认为此页面需要改进?
在 github 上编辑它 !