Yii 框架的訪问地址若不简化会让人认为非常繁琐。未简化的地址一般格式例如以下:
http://localhost:80/test/index.php?r=xxx/xxx/xxx
若是带有參数会更复杂:
http://localhost:80/test/index.php?r=xxx/xxx/xxx¶m1=XXX¶m2=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