ci在nginx下一个问题,不得解
本帖最后由 慢慢走 于 2011-9-13 20:16 编辑我刚学CI,和nginx,现在有个网站程序移植到nginx下(原是apache的),我请教个nginx配置问题,重写规则都已经改了(网上搜了个通用的CI框架的配置,现在的问题是,程序中有个函数是后台的在线编辑模板文件,模板文件大部分是php后缀名的,因此把以后缀名为php的文件名传递给功能函数,现在传递失败,但是除了php结尾的都可以传递(比如css结尾的),而且在原有的Apache下一切正常,不得解,是新手,nginx下应该怎么配置?
路径举例:域名/admin/edittemplate/~auction~buy.php(404错误,在apache下正常)
域名/ admin/edittemplate/~~css~common.css(正常,可以在线编辑)
希望回复,功能函数如下
function edittemplate($dir='')
{
clearpagecache();
$this->db->cache_delete_all();
$dir=str_replace('~','/',$dir); //把"~"转为"/"
$datas['admin']=$this->_check_admin_login(1);
$this->_check_admin_permission(__function__,$datas['admin']);
$datas['config']=$this->config_model->get_config();
$datas['display_dir']=$dir;
if(is_file('application/views/'.$datas['config']['template'].'/'.$datas['display_dir']))//判断文件是否存在
$datas['display_dir']=dirname($datas['display_dir']);
$datas['path']='application/views/'.$datas['config']['template'].'/'.$dir; //路径赋值
if(is_file($datas['path']))
{
$datas['dir']=dirname($datas['path']);
$datas['contents']=file_get_contents($datas['path']); //获取内容
}
else
$datas['dir']=$datas['path'];
$datas['fileslist']=array();
$temp=scandir($datas['dir']);
foreach($temp as $tmp)
if(!in_array($tmp,array('.','..','.svn')))
$datas['fileslist'][]=$tmp;
foreach($datas['fileslist'] as &$file)
{
if(is_dir($datas['dir'].'/'.$file))
$file=array('name'=>$file,'type'=>'dir');
elseif(in_array(strtolower(end(explode('.',$datas['dir'].'/'.$file))),array('png','gif','jpg','jpeg')))
$file=array('name'=>$file,'type'=>'img');
else
$file=array('name'=>$file,'type'=>'file');
}
unset($file);
if(is_file($datas['path']))
{
$datas['filename']=basename($datas['path']);
$datas['contents']=file_get_contents($datas['path']);
}
if(isset($_POST['contents']))
{
$this->_check_admin_permission(__function__."_post",$datas['admin']);
$contents=$_POST['contents'];
file_put_contents('application/views/'.$datas['config']['template'].'/'.$dir,$contents);
redirect('admin/edittemplate/'.str_replace('/','~',$dir));
}
$this->load->view('admin/template/edittemplate',$datas);
}
本帖最后由 慢慢走 于 2011-9-13 20:18 编辑
再贴个nginx的配置,这个配置其他都正常server {
listen 80;
server_name www.domain.com;
if ($host != 'www.domain.com' ) {
rewrite ^/(.*)$ http://www.domain.com/$1 permanent;
}
index index.php;
roothtml;
location /
{
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
# break;
}
}
location ~ \.php$
{
fastcgi_paramSCRIPT_FILENAME/index.php;
location ~ ^(.+\.php)(.*)$ {
root html;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED /usr/local/nginx/html$fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log off;
}
} 慢慢走 发表于 2011-9-13 20:17 static/image/common/back.gif
再贴个nginx的配置,这个配置其他都正常server {
listen 80;
serv ...
这个改写正合我用。
我的改写不知道为什么传不了post组。。。。
页:
[1]