您当前的位置:首页 > 分类 > 技术资讯 > PHP > 正文

NGINX,Yii配置rest路由风格配置

发布时间:2015-08-08 16:48:08      来源:51推一把
【摘要】这个不是很麻烦的事情,毕竟Yii已经做了所有的路由的相关事情,我们只需要配置一下路由规则和nginx就可以了,这里介绍三种nginx配置方案,其实不止Yii,大多数的php框架都可以这样配置

这个不是很麻烦的事情,毕竟Yii已经做了所有的路由的相关事情,我们只需要配置一下路由规则和nginx就可以了,这里介绍三种nginx配置方案,其实不止Yii,大多数的php框架都可以这样配置

方案一

##这个是网上最多的解决方案
if (!-e $request_filename) {
    rewrite ^/path/(.*)  /path/index.php/$1 last;
}
判断请求的文件是否存在,然后就rewrite给index.php 需要配置nginx的pathinfo的支持这样可能带来一点点效率问题,和安全问题(http://www.laruence.com/2010/05/20/1495.html)

方案二

rewrite参数传递路由
location /sampleapp {
      rewrite ^/sampleapp/(.*)$ /sampleapp/index.php?r=$1;
 }
这是nginx推荐的yii配置,大家可以移步 http://wiki.nginx.org/Yii

这也是我刚开始最喜欢的配置方式,但却有一个问题

如果你配置yii rule array(login=>account/login)

然后访问 http://host/sampleapp/login 会发现是一个404

方案三

location ~ .php$ {
     deny all;
}
 
location ^~ /apppath {
     fastcgi_pass unix:/var/run/php5-fpm.sock;    
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root/apppath/index.php;  }
 
location ~ ^/apppath/(protected|framework|nbproject){
     deny all;
}
 
location ^~ /apppath/assets/ {
     access_log off;
     expires 24h;
}
这里需要注意的是不可以设置
fastcgi_index index.php;
会让yii "误解"路径

方案三这里是完整的版本,把路径下所有的请求都转给index.php处理,然后禁止.php后缀访问(可以有效防止webshell)