通过urlmanager实现yii地址美化,需配合服务器中的rewrite配置
1、在'components'中加入
'urlManager'=>array(
'urlFormat'=>'path',
//使用pathinfo模式,不需要?r=
'showScriptName'=>false,
//隐藏index.php
'rules'=>array(
//这里面写规则,下文再做解释
'pattern1'=>'route1',
'pattern2'=>'route2',
'pattern3'=>'route3',
),
),
2、在nginx中配置
找到相应站点的配置文件,nginx.conf,但如果你是lnmp,它会自动调用conf里的站点配置文件,你可在/usr/local/nginx/conf/vhost
中找到。
添加以下规则:(fastcgi_pass视具体服务器配置而定,不必更改。若规则已存在,加入红色两行)
location ~
.*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
若你在1中配置urlmanager为不显示index.php,则还需要添加如下规则:
location / {
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
}
# if(!-e
$request_filename)的意义是先确定访问地址是否是真实存在的文件,否不是,则 rewrite 至
index.php
3、在apache中配置
在根目录下建立 .htaccess 文件,添加以下代码并保存
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