• Yii 框架 URL路径简化


     Yii 框架的訪问地址若不简化会让人认为非常繁琐。未简化的地址一般格式例如以下:

    http://localhost:80/test/index.php?r=xxx/xxx/xxx

    若是带有參数会更复杂:

    http://localhost:80/test/index.php?r=xxx/xxx/xxx&param1=XXX&param2=XXX


    那么我们通过什么方法把它美化下呢:

    1.在config目录下的main.php文件内。找到urlManager的配置,改动为例如以下:

                'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
    '<controller:w+>/<id:d+>'=>'<controller>/view',
    '<controller:w+>/<action:w+>/<id:d+>'=>'<controller>/<action>',
    '<controller:w+>/<action:w+>'=>'<controller>/<action>',
    '<controller:w+>/<action:w+>'=>'<controller>/<action>',
    ),
    ),


    如今再来訪问你的项目,你就会发现你的项目URL变成了:

    http://localhost:80/test/index.php/XXX/XXX

    2.这和不够,我们想继续简化,把index.php也去掉。

    继续改动main.php文件,

    'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false, //去除index.php
    //'urlSuffix'=>'.html', //加上.html  
    'rules'=>array(
    '<controller:w+>/<id:d+>'=>'<controller>/view',
    '<controller:w+>/<action:w+>/<id:d+>'=>'<controller>/<action>',
    '<controller:w+>/<action:w+>'=>'<controller>/<action>',
    '<controller:w+>/<action:w+>'=>'<controller>/<action>',
    ),
    ),

    这么改动之后。index.php不见了,可是会发现,部分URL出错了。

    怎么解决呢?

    3.加入 .htaccess文件,用于项目的訪问。内容例如以下:

    <IfModule mod_rewrite.c> 

    Options +FollowSymLinks
    IndexIgnore */*
    RewriteEngine on

    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # otherwise forward it to index.php
    RewriteRule . index.php

    </IfModule>



    这样进入项目就会自己主动訪问index.php文件。url就不会错乱了。


    最后简化后的URL例如以下:

    http://localhost:80/test/XXX/XXX

  • 相关阅读:
    入门命令13-字符串查找增强:findstr
    NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
    docker: "build" requires 1 argument. See 'docker build --help'.
    Mac 下 docker安装
    eclipse导入maven web 项目 但是不显示成web 项目
    @QueryParam和@PathParam比较
    JVM--详解类加载机制
    JVM--Class类文件结构
    mysql left join中where和on条件的区别
    JAVA线程锁---Synchronized
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6781078.html
Copyright © 2020-2023  润新知