• Yii 2 修改 URL 模式为 PATH 模式,并隐藏index.php


    在弄yii的url重写,希望能把url改成更好记的形式,同时去掉index.php的部分。转化前后的对比:

    修改前: http://localhost/index.php?r=site/page?view=about

    修改后: http://localhost/site/page?view=about

     

    查了些资料完成以上的效果。我到环境是: apache2(httpd-2.2.21), PHP5.3.8, Yii 1.1.8

    STEP 1

    首先先确保apache2有rewrite模块,具体可通过phpinfo()看到apache的模块。

    我在这步折腾了不少时间,不管怎么编译都出不来,最后是通过如下完成到:

    cd /home/qteqpid/Software/httpd-2.2.3/modules/mappers/
    /usr/local/apache2/bin/apxs -c mod_rewrite.c
    /usr/local/apache2/bin/apxs -i -a -n mod_rewrite mod_rewrite.la 
    如果没出错,在/usr/local/apache2/modules/ 中就会有mod_rewrite.so了 注意,然后只能在httpd.conf文件里添加以下一行,, 
    LoadModule rewrite_module modules/mod_rewrite.so

    重启apache即可。

    STEP 2

    然后修改protected/config/main.php,修改如下:

           'urlManager'=>[ 'class' => 'yiiwebUrlManager', 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules'=>[ '<controller:(post|comment)>/<id:d+>/<action:(create|update|delete)>' =>'<controller>/<action>', '<controller:(post|comment)>/<id:d+>' => '<controller>/read', '<controller:(post|comment)>s' => '<controller>/list', ], ],

    这一步之后,在yii里的所有链接将不会看到index.php,但还应该到apache在收到如此url请求时懂得加上index.php,这就需要url重写了。

    STEP 3

    有了STEP1的前提,就可以在yii项目的根目录(和index.php同级目录)下添加.htaccess目录,在里面写上:

    <IfModule rewrite_module>
        Options +FollowSymLinks
        IndexIgnore */*
        RewriteEngine On

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . index.php
    </IfModule>

    就ok了。

  • 相关阅读:
    oracle中的exists 和not exists 用法详解
    再次谈谈easyui datagrid 的数据加载
    oracle之trunc(sysdate)
    小菜学习设计模式(五)—控制反转(Ioc)
    vim实用技巧
    003_Linux的Cgroup<实例详解>
    systemd在各个linux发行版的普及
    (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息
    中国科学院国家授时中心
    Linux时间同步配置方法
  • 原文地址:https://www.cnblogs.com/xiezhi/p/6265595.html
Copyright © 2020-2023  润新知