## 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
- 开始
- Yii2开发小技巧
- Yii2使用不同的方式进行邮件发送逻辑处理
- Yii2 Serialization of 'Closure' is not allowed 错误
- Yii创建应用
- Yii应用结构和流程
- Yii的路径别名
- Yii的请求
- Yii的响应
- Sessions 和 Cookies
- Yii自定义全局工具函数
- Yii2模型
- Yii2视图
- Yii2控制器
- 大数据节省内存处理
- 关联查询hasMany、hasOne
- Yii2 URL地址美化
- Yii2整合AdminLTE后台主题
- Yii2模型中的场景
- Yii2中的RBAC
- Yii2项目后台整合yii2-admin模块
- RBAC集成AdminLTE后台主题对菜单进行控制
- Yii2自定义Gii模板
- 修复AdminLTE引用外部字体文件导致访问变慢的情况
- Yii2事件简单使用
- Yii2模型事件
- Yii2使用GridView新增操作按钮
- Yii2向loyout模板文件中传值
- Yii2数据缓存
- Yii2缓存
- Yii2数据缓存之增删改查
- Yii2拓展
- Yii2日期时间插件-datetimepicker
- kartik-v/yii2-widget-fileinput上传插件