Yii2-url路由配置

Yii2-url路由配置

没做任何处理的情况下,url地址如下

http://www.yii2-basic.com/index.php?r=site/about 

去掉index.php 和 开启url美化

/web/目录下添加.htaccess文件

RewriteEngine on

 # 如果是一个目录或者文件,就访问目录或文件
 RewriteCond %{REQUEST_FILENAME} !-d

 # 如果文件存在,就直接访问文件,不进行下面的RewriteRule
 RewriteCond %{REQUEST_FILENAME} !-f

 RewriteRule . index.php

配置文件

'urlManager' => [
    'enablePrettyUrl' => true, //这个表示开启url美化
    'showScriptName' => false, //这个字段表示不显示文件类型的名称,如.php或者.html
    // 'suffix' => '.html' //这个字段表示后缀
],

UrlManager 路由规则

用法示例

$config = [
    'components' => [
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'suffix' => null,
            'rules' => [
                'index' => 'site/index',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            ],
        ],
    ],
];

常用参数说明

/**
 * @var boolean 是否启用 URL 美化(路径友好化).
 */
public $enablePrettyUrl = false;
/**
 * @var boolean 是否启用严格的解析.
 * 如果启用严格解析, 则传入的请求 URL 必须至少与 $rules 中的一个匹配才被视为有效的请求. 否则, 请求的路径信息部分将被视为请求的路由.
 * 该属性仅在 $enablePrettyUrl 为`true`时使用.
 */
public $enableStrictParsing = false;
/**
 * @var \yii\web\UrlNormalizer|array|string|false
 */
public $normalizer = false;
/**
 * @var string 路由的 GET 参数名称.
 * 该属性仅在 $enablePrettyUrl 为`false`时使用.
 */
public $routeParam = 'r';
/**
 * @var array $enablePrettyUrl 为`true`时创建和解析 URL 的规则.
 * 该属性仅在 $enablePrettyUrl 为`true`时使用.
 */
public $rules = [];
/**
 * @var boolean 是否在创建的 URL 中显示入口脚本名称.
 * 该属性仅在 $enablePrettyUrl 为`true`时使用.
 */
public $showScriptName = true;
/**
 * @var string 当 $enablePrettyUrl 为`true`时使用的 URL 后缀. eg: '.html'.
 * 该属性仅在 $enablePrettyUrl 为`true`时使用.
 */
public $suffix = null;

$rules 参数详解

'rules' => [
    // 匹配首页, 生成`html://yii2.com/index.html`
    'index' => 'site/index',

    /** 匹配通用带`?id=15`的url
     * eg:`http://yii2.com/index.php?r=article%2Fview&id=104`,
     * 生成: `http://yii2.com/article/view/104.html`
     */
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',

    /** 匹配通用的url
     * eg:`http://yii2.com/index.php?r=article/index`,
     * 生成: `http://yii2.com/article/index.html`
     */
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
posted @ 2024-04-17 10:48  胡勇健  阅读(305)  评论(0)    收藏  举报