zoukankan      html  css  js  c++  java
  • Yii2的urlManager URL美化

    Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别。

    在Yii1.*中开启path路由规则直接使用

    'urlFormat' => 'path',

    但在Yii2中已经没有urlFormat 对象方法,在Yii2取而代之的是

     'enablePrettyUrl'=>TRUE,

    一个典型的Yii1.* urlManager配置:

      'urlManager' => array(
                'urlFormat' => 'path',
                'showScriptName' => false, //隐藏index.php  
                'urlSuffix' => '.html', //后缀   
                'rules' => array(
                    'news/detail-<id:.*>' => 'news/detail', //http://cms.com/news/detail-27d24c26.0486c.0aea8.a3d2803b.0000111.03.html   id==>[id] => 27d24c26.0486c.0aea8.a3d2803b.0000111.03
                    'news/<id:.*>-<category:d+>' => 'news', //http://cms.com/news/02f5bc8f-04600-0b477-c6bc82ab-0000111-03-1.html ==== $this->createUrl('news/', array('id' => $value['id'],'category'=>1));  
                    'singlePage/<id:.*>' => 'singlePage',  
                    'contact' => 'about/contact',  
                    'addOrder' => 'Online/addOrder',  
                    /**
                     * $this->createUrl('news/index',array('userid'=>123,'title'=>3434,'nid'=>'sdfsdfsdf'))   index.php/new/index?userid=123&title=3434&nid=sdfsdfsdfsd
                     * http://cms.com/news/123/3434/sdfsdfsdf-index.html      
                     */
                   'news/<id:d+>/<title:.*?>/<nid:.*?>-index' => 'news/index',
                    'refresh/' => 'index/Refresh',
                    'index.jsp/' => 'index/',
                    'index.aspx/' => 'index/',
                    '<controller:w+>/<action:w+>' => '<controller>/<action>',
                ),
            ),

    那Yii2如何配置呢?

    首先我们的URL地址是这样的

    http://new.com/index.php?r=auth%2Fmenulink&post=2

    我们要让地址改为path模式:

    http://new.com/auth/menulink/post/2

    1.在Nginx中开启rewrite 

    server {
            listen       80;
            server_name  new.com ;
            location / {
                root   F:/www/new/web;
                index  index.html index.htm index.php;
                #autoindex  on;
                 if (!-e $request_filename){
                    rewrite ^/(.*) /index.php?r=$1 last;
                }
            }
            location ~ .php$ {
                root          F:/www/new/web;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    }

    2.config中web.php 配置

     'urlManager' => [
                'enablePrettyUrl' => true,  //美化url==ture
                'enableStrictParsing' => false,  //不启用严格解析 
                'showScriptName' => false,   //隐藏index.php
                'rules' => [
                    '<module:w+>/<controller:w+>/<id:d+>' => '<module>/<controller>/view',
                    '<controller:w+>/<id:d+>' => '<controller>/view',
                     '/m-api/' => '/meanpan-api/index', // 默认index
                     '/mp-api/<action>' => '/meanpan-api/<action>',   // /mp-api/*==>/meanpan-api/*
                ],
            ]

    参数说明:

    Yii官网说明:http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html

    $enablePrettyUrl 

    Whether to enable pretty URLs. Instead of putting all parameters in the query string part of a URL, pretty URLs allow using path info to represent some of the parameters and can thus produce more user-friendly URLs, such as "/news/Yii-is-released", instead of "/index.php?r=news/view&id=100".

    $enableStrictParsing

    Whether to enable strict parsing. If strict parsing is enabled, the incoming requested URL must match at least one of the $rules in order to be treated as a valid request. Otherwise, the path info part of the request will be treated as the requested route. This property is used only when $enablePrettyUrl is true.

    $showScriptName 

    Whether to show entry script name in the constructed URL. Defaults to true. This property is used only if $enablePrettyUrl is true.

    现在访问URL就成为path模式了。

    启用开发模式DEBUG

     if (YII_ENV_DEV) {
        // 启用开发模式DEBUG
        $config['bootstrap'][] = 'debug';
        $config['modules']['debug']['class'] = 'yiidebugModule';
        $config['modules']['debug']['allowedIPs'] =['127.0.0.1','201.104.104.104',"::1"];
        $config['modules']['debug']['historySize'] =500;  # 修改debug记录条数
    
        $config['bootstrap'][] = 'gii';
        $config['modules']['gii'] ['class']= 'yiigiiModule';
        $config['modules']['gii']['allowedIPs'] =['127.0.0.1','201.104.104.104',"::1"];
    }
  • 相关阅读:
    使用FluentScheduler和IIS预加载在asp.net中实现定时任务管理
    [WCF REST] Web消息主体风格(Message Body Style)
    [WCF REST] Web消息主体风格(Message Body Style)
    REST WCF Service中的WebMessageBodyStyle
    REST WCF Service中的WebMessageBodyStyle
    C#表示空字符
    053517
    053516
    053515
    053514
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4607968.html
Copyright © 2011-2022 走看看