Nginx+PHP-fpm伪静态配置方法。
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 ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
access_log off;
expires 1d;
}
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($|/) {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/dev/shm/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
}