TP在nginx下的伪静态配置,还是有点坑的。终于配出了完美的配方,在此跟大家共享下。
server {
listen 80;
#所有文件放到/var/www/html/xxx目录,而index.php入口文件,及其他静态文件放到/var/www/html/xxx/Html
#这样可以确保其他类文件不会被访问到。
root /var/www/html/xxx/Html;
index index.php index.html index.htm;
server_name www.xxx.com xxx.com;
location / {
#第二个 $uri/ 代表如果访问不到文件,那可以尝试访问目录。(会自动查找目录内的index文件)
#如果写成/index.php?s=$uri 也可以,但是会导致 /Home/Index/Show?id=1的id参数获取不到。
#$query_string漏了也会导致上一行的问题
try_files $uri $uri/ /index.php$uri?$query_string;
}
#如果写成location ~ \.php$ { 的形式,会导致/index.php/Home/Index/Show这种路径识别成目录,然后目录不存在,又重新定向到index的死循环。
#一定要写成如下 php($|/) 的形式。
location ~ \.php($|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#PATH_INFO 参数是有用的
fastcgi_param PATH_INFO $fastcgi_path_info;
#这一行根据实际情况配,另TP3.2在PHP7.1下完美运行
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}