点击 小韩说理 关注!
概述
URL的美化工作, 一向都是SEO同志们的基本工作. 因此良好的URL格式, 也是我们处理用户接口程序需要提供的基本内容.
本章, 就告诉到家如何去处理Yii2中的URL
默认的URL格式
使用请求参数r, 表示当前的路由, 例如
index.php?r=Site/login
以上的URL就请求 SiteController的login动作
默认路由配置
如果没有提供r参数, 由配置中的默认路由指定控制器和动作.
配置项defaultRoute可以完成默认路由的配置, 例如:
配置文件: main.php
defaultRoute => 'Site/index'
这样site/index就是默认的控制器和动作
除了同时指定控制器和动作, defaultRoute还可以仅仅指定默认的控制器部分, 例如:
配置文件: main.php
defaultRoute => 'Site'
此时, 默认的动作就由Site控制器的属性defaultAction来决定, 例如:
SiteController.php中的代码
/**
* Site controller
*/
class SiteController extends Controller
{
// 当前控制器中的默认动作
public $defaultAction = 'about';
}
自定义URL样式(美化URL样式)
如果对r=controller/action这种通用的样式不满意, Yii2中允许自定义URL样式. 需要使用urlManager组件完成.
配置urlManager组件:
main.php配置文件, 组件配置
'components' => [
// URL管理组件
'urlManager' => [
// 是否开启美化URL
'enablePrettyUrl' => true,
// 是否显示入口文件脚本
'showScriptName' => true,
// URL 后缀
'suffix' => '.html',
// 自定义的路由规则
'rules' => [
// 暂时无规则
],
]
上面的配置, 就开启了美化URL功能. 同时选择的隐藏入口文件脚本, 并配置了URL后缀为.html
在没有定义自定义URL样式规则时, URL被美化成典型的pathinfo模式, 例如:
index.php?r=Site/login
这个地址就会被美化成:
Site/login.html
这样 使用Site/login.html这个URL就可以访问到SiteController的actionLogin动作了
如果pathinfo还没有达到你的美化的目的, 则需要自定义规则了, 在rules配置中增加:
'rules' => [
// patttern, 规则, URL格式
// restful路由
['class' => 'yii\rest\UrlRule', 'controller' => 'role'],
'register' => 'site/register',
'login' => 'site/login',
// 请求方法的限制
'POST users' => 'user/create',
// 请求参数的处理
'users/' => 'user/options'
],
通过rules配置项, 就定义了典型的自定义URL, 上面的配置中,
请求: login.html就可以路由到site/login
POST方式请求: users, 就可以路由到user/create
携带数据请求: users/42, 就可以路由到user/options, 并同时携带请求参数ID过去
这几种就是典型自定义URL的写法.
URL的生成
由于URL在程序中有多种形式. 因此需要根据当前的配置生成不同的URL, 而不能写成固定死的.
通过yii\helpers\Url::to()方法可以生成url
该方法, 也支持在配置美化路由后, 自动生成美化后的URL, 使用方法如下:
在控制器或者是视图模板中:
Url::to('site/login')// login.html
URL::to(['user/options', ['id'=>42]])// user/42.html
URL::to(['user/options', ['id'=>42]], true)// http://hellokang.net/user/42.html
URL::to(['user/options', ['id'=>42]], 'https')// https://helloknag.net/user/42.html
Url::to([‘路由’, 额外参数], false|true|http|https)
此时, 就可以基于我们的配置, 形成需要的URL啦!
一定要用该方法形成URL, 不要自己写死了, 否则更新就是你的噩梦.
除了URL::to()这个通用的URL生成方法之外, Url助手还提供了下面的几个快捷处理Url的方法:
结语
URl的处理就说到了这里. 使用简单功能强大.
一家之言, 欢迎补充, 拍砖.
更新, 更专业的PHP, Python, 前端的资源, 可以关注微信公众号: 小韩说理.
直接扫描右侧二维码即可, 关注哦.