NGINX,Yii配置rest路由风格配置
这个不是很麻烦的事情,毕竟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)