Yii url重写

在弄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’=>array(
            ‘urlFormat’=>’path’,
            ‘showScriptName’=>false,    //
这一步是将代码里链接的index.php隐藏掉。
            ‘rules’=>array(
               
‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
               
‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action>’,
               
‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
            ),
        ),

这一步之后,在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了。

http://hi.baidu.com/qteqpid_pku/blog/item/2909cf6dd610e8e742169494.html

 

相关文章