Yii2 之 UrlManager 实践 (一)

1.  enablePrettyUrl

yii2默认不支持类似 http://<domain>/site/error 的url格式,需要在config.php中启用 enablePrettyUrl 属性

[
	//others

	‘components‘ => [
		‘urlManager‘ => [
			‘enablePrettyUrl‘ => true,
		],
	],

];

2. 配置suffix 实现伪静态 *.html

需要在 config.php中配置 urlManager 即可

[
	‘components‘ => [
		‘urlManager‘ => [
			‘enablePrettyUrl‘ => true,
			‘suffix‘ => ‘.html‘,
		],
	],
];

3. 同时支持 http://<domain>/site/error.html 以及 http://<domain>/site/error 的url格式

*  没有找到仅仅配置config便可以实现的方式,这里重写UrlManager。只重写了一句代码,仅贴部分展示代码

namespace common\yiiext\web;

use yii;
use yii\web\UrlManager as BaseUrlManager;

class UrlManager extends BaseUrlManager
{

	public function parseRequest($request)
	{
		if ($this->enablePrettyUrl) {
			//other code ...
			if ($suffix !== ‘‘ && $pathInfo !== ‘‘) {
				$n = strlen($this->suffix);
				if (substr_compare($pathInfo, $this->suffix, -$n, $n) === 0) {
					$pathInfo = substr($pathInfo, 0, -$n);
					if ($pathInfo === ‘‘) {
						// suffix alone is not allowed
						return false;
					}
				} else {
					// 就这一句区别用父类
					// suffix doesn‘t match
					return [$pathInfo, []];
				}
			}

			//other code ..
	}
}

  

* 然后再次配置config.php

[
	‘components‘ => [
		‘urlManager‘ => [
			‘class‘ => ‘common\yiiext\web\UrlManager‘,
			‘enablePrettyUrl‘ => true,
			‘suffix‘ => ‘.html‘,
		],
	],
];

  

时间: 2024-11-07 03:34:28

Yii2 之 UrlManager 实践 (一)的相关文章

Yii2的urlManager URL美化

Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经没有urlFormat对象方法,在Yii2取而代之的是 'enablePRettyUrl'=>TRUE, 一个典型的Yii1.*urlManager配置: 'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' =>

YII2框架详解

yii2框架的安装我们在之前文章中已经提到下面我们开始了解YII2框架 Yii2的应用结构: 目录篇: advance版本的特点是:根目录下预先分配了三个模块,分别是前台.后台.控制台模块. 1.backend 它主要用于管理后台,网站管理员来管理整个系统. assets 目录用于存放前端资源包PHP类. 这里不需要了解什么是前端资源包,只要大致知道是用于管理CSS.js等前端资源就可以了. config 用于存放本应用的配置文件,包含主配置文件 main.php 和全局参数配置文件 param

yii2 增加新的目录结构

搭建新的目录结构详细点击这里 搭建Restful API 点击这里 1.开发环境操作系统        Windows Server 2012 R2 DatacenterPHP架构        Apache版UPUPW PHP5.4编程软件        Zend Studio 12.0.2 2.环境配置解压缩UPUPW到D盘根目录,分别在UPUPW中新添加三个站点,如下http://admin.mxq.com http://www.mxq.com http://api.mxq.com网站目录

【学习笔记】Yii2.0 Basic代码中路由链接被转义的处理

按照惯例,说下运行环境和各版本编号 OS:Windows10 Apache:2.4 MySQL:5.7.15 PHP:7.0.11 问题描述:按照官网的提示,下载了basic版本的代码,配置了虚拟域名,打开浏览器可以访问了(具体过程略). 但是,在点击链接地址时会发现,链接地址被转义了,“/”变成了“%2F”. 查找代码,一步一步找. 找到最后yii-v2.0.9-basic\vendor\yiisoft\yii2\web\UrlManager.php 第371行,发现url链接被urlenco

2.2 Yii2.0 Basic代码中路由链接被转义的处理

按照惯例,说下运行环境和各版本编号 OS:Windows10 Apache:2.4 MySQL:5.7.15 PHP:7.0.11 一.问题描述 按照官网的提示,下载了basic版本的代码,配置了虚拟域名,打开浏览器可以访问了(具体过程略). 但是,在点击链接地址时会发现,链接地址被转义了,“/”变成了“%2F”. 二.问题解决 查找代码,一步一步找. 找到最后yii-v2.0.9-basic\vendor\yiisoft\yii2\web\UrlManager.php 第371行,发现url链

YII2安装中遇到的错误解决Calling unknown method: yii\web\UrlManager::addRules()

安装好YII2 后出现 如下图错误提示: 解决方法如下: 打开安装好的YII2项目目录(YII2安装方法参见 摘取天上星 的博文:http://blog.csdn.net/zqtsx/article/details/39344913) 打开YII2项目目录里的 composer.json 文件 (如下图) 在composer.json 文件里添加 如下(extra括号里的部分)代码: 修改后的composer.json文件 大致如下(extra部分为我们添加的新增代码): { "name&quo

yii2 urlmanager的配置

怎样把localhost/index.php?r=user变为localhost/user 1.修改backend/config/main.php,在components数组中增加  'urlManager' => [    'enablePrettyUrl' => true,    'showScriptName'=> false,    'rules' => [                '<controller:\w+>/<id:\d+>' =&g

Yii2 composer更新后报错: Calling unknown method: yii\web\UrlManager::addRules()

网上搜了好多答案,基本上都是让你在composer.json里面添加这样一段话: "extra": { "asset-installer-paths": { "npm-asset-library": "vendor/npm", "bower-asset-library": "vendor/bower", "npm-searchable": false, "b

【Yii系列】最佳实践之后台业务框架

缘起 上面的几章都讲概念了,没有怎么讲到实践的东西,可能会有些枯燥,这很正常的,概念还是需要慢慢啃的,尤其是官网其他的部分,需要狠狠的啃. 什么,你啃不动了?看看官网旁边的那个在线用户吧. 你不啃的时候可是有这么多人在啃知识,如果不想以后被这打击,赶紧学!!!一如当年大学的我,每天夜里都抱着一本<算法导论>在啃一样,自律相当重要. 这一章我就带大伙了解一下前两章的概念有啥用,应用到实际,这是临门一脚,但是,我总是觉得概念的重要性至少要占70%,临门的一脚实践只占30%,望君能体会~ 环境 操作