yii2-url

  • yii\web\UrlManager::parseRequest() 方法可以将 request 解析为 route 和 parameters。
  • yii\web\UrlManager::createUrl() 方法可以将 route 和 parameters 生成一个 URL。

生成 url

生成绝对地址:

echo Url::toRoute('site/index', true);
// http://www.example.com/index.php?r=site/index

echo Url::toRoute('site/index', 'https');
// https://www.example.com/index.php?r=site/index

当使用 UrlManager::createAbsoluteUrl()、Url::to() or Url::toRoute() 来生成 URLs 时,指定模式为空字符串现在会生成协议相对的 URLs:

echo Url::to('@web/images/logo.gif', '');
// 将打印 //www.example.com/images/logo.gif

设置默认控制器 和 错误页面

[
    'components' => [
        'errorHandler' => [
            // 错误页面,原值:site/error
            'errorAction' => 'html/error',
        ],
    ],
    // 默认控制器,默认值为 site
    'defaultRoute' => 'html',
];

闭站保护 catchAll

[
    // ...
    'catchAll' => ['site/offline'],
];

urlManager

[
    'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '/' => 'site/index',
                '/login' => 'site/login',
            ],
        ],
    ],
];
use yii\helpers\Url;

// Url::to() calls UrlManager::createUrl() to create a URL
$url = Url::to(['site/index']);// 输出的就是 /
$url = Url::to(['site/login']);// 输出的就是 /login