🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Yii2 URL地址美化 [TOC]   Web开发中不可避免的要使用到URL。用得最多的就是生成一个指向应用中其他某个页面的URL。 我们需要一个简洁的、集中的、统一的方法来完成这一过程。   使用 urlManager组件,我们可以解析用户的请求并指派相应的`module`, `controller`和`action`来进行处理, 还可以根据预义的路由规则,生成需要的URL返回给用户使用。 简而言之,urlManger具有解析请求以便确定指派谁来处理请求和根据路由规则生成URL 2个功能。 ### URL美化 一般情况下,Yii应用生成和接受形如`http://www.domain.com/index.php?r=post/view&id=1`的URL。这个URL分成几个部分: * 表示主机信息的`http://www.domain.com` * 表示入口脚本的`index.php` * 表示路由的`r=post/view` * 表示普通查询参数的`id=1` #### 隐藏入口文件 * Nginx位置 ```shell location / { try_files $uri $uri/ /index.php?$args; } ``` * Apache配置文件(放在入门文件同级目录) ```shell RewriteEngine on # 如果是一个目录或者文件,就访问目录或文件 RewriteCond %{REQUEST_FILENAME} !-d # 如果文件存在,就直接访问文件,不进行下面的RewriteRule RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php ``` > 另外服务器需要开启`rewrite`模块。 #### 配置UrlManager组件 打开`@app/config/main.php`中的`components`下面添加以下代码,如果想在全局生效可以将配置直接写入`common`模块下。 ```php 'components'=>[ ... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'suffix' => '.html', // 伪后缀 'rules'=>[ 'article/<id:\d+>' => 'article/view', // 文章详情 'articles/<country_id:\d+>' => 'article/index', // 文章列表 ], ], ... ], ``` > 详细页面,未优化前访问路径为文章 http://www.domain.com/index.php?r=article/detail.html&id=1 ,优化后访问路径为:http://www.domain.com.cn/article/1390.html > 文章列表页面修改前为:http://www.domain.com.cn/article/index.html?country_id=1 ,优化后访问路径变为:http://dev.welltrend.com.cn/articles/1.html