apache上正常解析的基于PATHINFO访问url格式.nignx上就不行.需要修改nginx.conf配置,
我的环境是php5.5+php 7.1 +nignx +apache 及wdcp 3.2
/www/wdlinux/nginx/conf/vhost/你的域名.conf
不同的环境这里目录可能不同.
server {
listen 80;
root /home/wwwroot/game_cn/public_html;
server_name game.cn;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
#注意下面一行的区别
location ~ \.php(.*)/?.*$ {
fastcgi_pass unix:/tmp/php-71-cgi.sock;
fastcgi_index index.php;
set $path_info "";
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;
include fcgi.conf;
}
##以下两段,你如果不需要,最好去掉
location ~ /\.ht {
#表示禁止使用.htaccess伪静态,而是用下面的替换,
deny all;
}
location / {
try_files $uri $uri/ /?$args;
#表示 重定向,相当于伪静态.意思是,先检查是否有$uri这个文件,没有,就查是否有$uri/ 这个目录,如果没有,就直接重定向到?$args,不过这一句会产生一些负作用.比如用你的域名直接访问你的css静态文件,如果存在,则正常打开,如果不存在,则不是提示404错误,文件不存在.而是会重定向到index.php中了,如果是thinkphp 则一定会提示模块不存在.
}
}