假如 ThinkPHP 5.x 项目,在网站的一个子目录下面,如 /wenjianbao,如何设置Nginx的地址重写规则?
操作过程如下:
1、php.ini 中的配置参数 cgi.fix_pathinfo = 1
2、修改 nginx.conf 文件,
(1) 配置 fastcgi
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # 下面两句才能真正支持 index.php/home/main/index 的 pathinfo 模式 fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
(2) 去掉 /index.php/
location /wenjianbao { if (!-e $request_filename) { rewrite ^/wenjianbao/(.*)$ /wenjianbao/index.php?s=/$1 last; break; } }
- 原先的URL:/wenjianbao/index.php/home/main/index
- 现在的URL:/wenjianbao/home/main/index