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

原文地址:https://www.cnblogs.com/jzssuanfa/p/6781078.html