nginx服务器默认是不支持pathinfo模式的,即类似index.php/index形式的url会提示404。在这里,需要对nginx配置文件中需要开启pathinfo模式的server予以修改配置,修改nginx.conf文件如下:
location / {
index index.php;
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
location ~ \.php {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
#fastcgi_param script_filename $document_root$fastcgi_script_name;
include fastcgi.conf;
include fcgi_pathinfo.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param script_filename $document_root$real_script_name;
fastcgi_param script_name $real_script_name;
fastcgi_param path_info $path_info;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 7d;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root /home/wwwroot/;
}
}
并添加fcgi_pathinfo.conf如下:
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;
fastcgi_param redirect_status 200;
重要的就是,~\.php后面不能有$,以便能够匹配所有*.php/*形式的url,并且if与后面的括号之间必须有一个空格。
完毕之后,重启nginx。
如对本文有疑问, 点击进行留言回复!!
Nginx服务500:Internal Server Error原因之一
nginx禁止直接通过ip进行访问并跳转到自定义500页面的操作
网友评论