zoukankan      html  css  js  c++  java
  • 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 commonyiiextweb;
    
    use yii;
    use yiiwebUrlManager 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' => 'commonyiiextwebUrlManager',
    			'enablePrettyUrl' => true,
    			'suffix' => '.html',
    		],
    	],
    ];
    

      

  • 相关阅读:
    数论2&莫&杜
    虚树学习笔记
    LinkCutTree学习笔记
    FWT学习笔记
    容斥
    线段树合并
    线性基
    FFT_应用和例题
    斜率优化
    Redis中String的底层实现
  • 原文地址:https://www.cnblogs.com/gouge/p/7159712.html
Copyright © 2011-2022 走看看