liunx nginx 下CI访问 404 问题
今天把做好的项目放到Liunx服务器下,除首页以外全部部都报404的错误,在本地windows上测的好好的,怎么会出现这种问题呢,首先排除了文件大小写的问题,最终确定在nginx上,NGINX
默认不支持 PATH_INFO 模式,需要修改NGINX配置 让NGINX 来解析。在网上搜索到了几种方式,本人在这里总结一下。
第一种(并没有解决我的问题):server {
listen 80;
server_name www.ci.com;
index index.php index.html index.htm;
root "/servers/apps/CI";
location ~ \.php{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
##########################################pathinfo 模式
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){
set $real_script_name $1;
set $path_info $2;
}
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
##########################################nginx支持pathinfo 模式的重点
}
}
第二种(还是没有解决):if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
第三种(解决一部分,因为我后台路径是admin.php,index.php没事了,admin.php又不行了):location / {
root /root/www;
index index.php;
try_files $uri $uri/ /index.php?$uri&$args;
}
第四种(成功解决了我的问题):location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}