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了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM