nginx支持CI重写
本人采用NPMserv 0.3.2来运行CI框架,在NPMserv设置里不能给rewrite加条件,所以只能手动改配置文件vhost.conf;
下面是一个功能的例子:
server { #创建一个服务
listen 80; #监听80端口
server_name www.test.com; #绑定域名
location / { #设置根目录
root D:/wwwroot/mgdd; #根目录位置
index index.html index.htm index.php; #文件查找顺序
# 如果文件、目录不存在则执行重写
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}
# 设置错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 处理PHP程序
location ~ .*\.php {
root D:/wwwroot/mgdd;
fastcgi_pass 127.0.0.1:9000; # FastCGI 服务信息
fastcgi_index index.php;
# 为PHP程序提供一些常用的服务器变量
fastcgi_param SCRIPT_FILENAME D:/wwwroot/mgdd$fastcgi_script_name; # 执行的脚本名称
fastcgi_param PATH_INFO $request_uri; # 此参数非常重要,无此参数可能导致CI无法静态化
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
}
}