Yii - URL 格式

  • 简述

    Yii 应用程序处理请求的 URL 时,首先将 URL 解析为路由。然后,为了处理请求,这个路由被用来实例化相应的控制器动作。这个过程称为路由。反向过程称为 URL 创建。urlManager应用程序组件负责路由和 URL 创建。它提供了两种方法 -
    • parseRequest() - 将请求解析为路由。
    • createUrl() - 从给定路由创建 URL。
  • 网址格式

    urlManager应用程序组件支持两种 URL 格式 -
    • 默认格式使用查询参数r来表示路由。例如 URL /index.php?r=news/view&id=5代表路由news/viewid查询参数 5。
    • 漂亮的 URL 格式使用带有条目脚本名称的额外路径。例如,在前面的示例中,漂亮的格式是/index.php/news/view/5。要使用这种格式,您需要设置 URL 规则。
    要启用漂亮的 URL 格式并隐藏条目脚本名称,请执行以下步骤 -
    第 1 步 - 按以下方式修改config/web.php文件。
    
    <?php
       $params = require(__DIR__ . '/params.php');
       $config = [
          'id' => 'basic',
          'basePath' => dirname(__DIR__),
          'bootstrap' => ['log'],
          'components' => [
             'request' => [
                // !!! insert a secret key in the following (if it is empty) -
                   //this is required by cookie validation
                'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
             ],
             'cache' => [
                'class' => 'yii\caching\FileCache',
             ],
             'user' => [
                'identityClass' => 'app\models\User',
                'enableAutoLogin' => true,
             ],
             'errorHandler' => [
                'errorAction' => 'site/error',
             ],
             'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                // send all mails to a file by default. You have to set
                // 'useFileTransport' to false and configure a transport
                // for the mailer to send real emails.
                'useFileTransport' => true,
             ],
             'log' => [
                'traceLevel' => YII_DEBUG ? 3 : 0,
                'targets' => [
                   [
                      'class' => 'yii\log\FileTarget',
                      'levels' => ['error', 'warning'],
                   ],
                ],
             ],
             'urlManager' => [ 
                'showScriptName' => false, 
                'enablePrettyUrl' => true 
             ], 
             'db' => require(__DIR__ . '/db.php'), 
          ], 
          'modules' => [
             'hello' => [
                'class' => 'app\modules\hello\Hello',
             ],
          ],
          'params' => $params,
       ];
       if (YII_ENV_DEV) {
          // configuration adjustments for 'dev' environment
          $config['bootstrap'][] = 'debug';
          $config['modules']['debug'] = [
             'class' => 'yii\debug\Module',
          ];
          $config['bootstrap'][] = 'gii';
          $config['modules']['gii'] = [
             'class' => 'yii\gii\Module',
          ];
       }
       return $config;
    ?>
    
    我们刚刚启用了漂亮的 URL 格式并禁用了条目脚本名称。
    第 2 步- 现在,如果您在 Web 浏览器的地址栏中键入http://localhost:8080/site/about,您将看到漂亮的 URL。
    漂亮的网址
    请注意,该 URL 不再是http://localhost:8080/index.php?r=site/about