Yii - URL 规则



URL 规则是 yii\web\UrlRule 的一个实例。当启用漂亮 URL 格式时,urlManager 组件使用在其 rules 属性中声明的 URL 规则。

为了解析请求,URL 管理器按照声明的顺序获取规则,并查找第一个规则。

步骤 1 − 修改 config/web.php 文件中的 urlManager 组件。

'urlManager' => [
   'showScriptName' => false,
   'enablePrettyUrl' => true,
   'rules' => [
      'about' => 'site/about',
   ]
],

步骤 2 − 在您的 Web 浏览器中访问 https://127.0.0.1:8080/about,您将看到关于页面。

Modified urlManager Component

URL 规则可以与此模式关联查询参数 −

<ParamName:RegExp>,其中 −

  • ParamName − 参数名称

  • RegExp − 用于匹配参数值的可选正则表达式

假设,我们声明了以下 URL 规则 −

[
   'articles/<year:\d{4}>/<category>' => 'article/index',
   'articles' => 'article/index',
   'article/<id:\d+>' => 'article/view',
]

当规则用于解析时 −

  • /index.php/articles 被解析为 article/index
  • /index.php/articles/2014/php 被解析为 article/index
  • /index.php/article/100 被解析为 article/view
  • /index.php/articles/php 被解析为 articles/php

当规则用于创建 URL 时 −

  • Url::to(['article/index']) 创建 /index.php/articles

  • Url::to(['article/index', 'year' => 2014, 'category' => 'php']) 创建 /index.php/articles/2014/php

  • Url::to(['article/view', 'id' => 100]) 创建 /index.php/article/100

  • Url::to(['article/view', 'id' => 100, 'source' => 'ad']) 创建 /index.php/article/100?source=ad

  • Url::to(['article/index', 'category' => 'php']) 创建 /index.php/article/index?category=php

要向 URL 添加后缀,您应该配置 yii\web\UrlManager::$suffix 属性。

步骤 3 − 修改 config/web.php 文件中的 urlComponent

'urlManager' => [
   'showScriptName' => false,
   'enablePrettyUrl' => true,
   'enableStrictParsing' => true,
   'suffix' => '.html'
],

步骤 4 − 在 Web 浏览器的地址栏中输入地址 https://127.0.0.1:8080/site/contact.html,您将在屏幕上看到以下内容。注意 html 后缀。

Notice HTML Suffix
广告