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了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章