最完美解决Nginx部署ThinkPHP项目的办法
来源:互联网 发布:中国制造业出口数据 编辑:程序博客网 时间:2024/06/11 10:57
同时兼容上述url示例中的三种格式解决方法如下:
location / {
root /var/www;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
root /var/www;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
网上通用解决方法的配置如下:
其实应该使用更简单的方法,fastcgi模块自带了一个fastcgi_split_path_info指令专门用来解决此类问题的,该指令会根据给定的正则表达式来分隔URL,从而提取出脚本名和path info信息,使用这个指令可以避免使用if语句,配置更简单。
另外判断文件是否存在也有更简单的方法,使用try_files指令即可。
- server {
- ...
- location / {
- index index.htm index.html index.php;
- #访问路径的文件不存在则重写URL转交给ThinkPHP处理
- if (!-e $request_filename) {
- rewrite ^/(.*)$ /index.php/$1 last;
- break;
- }
- }
- location ~ \.php/?.*$ {
- root /var/www/html/website;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- #加载Nginx默认"服务器环境变量"配置
- include fastcgi.conf;
- #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
- set $fastcgi_script_name2 $fastcgi_script_name;
- if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
- set $fastcgi_script_name2 $1;
- set $path_info $2;
- }
- fastcgi_param PATH_INFO $path_info;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
- }
- }
其实应该使用更简单的方法,fastcgi模块自带了一个fastcgi_split_path_info指令专门用来解决此类问题的,该指令会根据给定的正则表达式来分隔URL,从而提取出脚本名和path info信息,使用这个指令可以避免使用if语句,配置更简单。
另外判断文件是否存在也有更简单的方法,使用try_files指令即可。
- server {
- ...
- location / {
- index index.htm index.html index.php;
- #如果文件不存在则尝试TP解析
- try_files $uri /index.php$uri;
- }
- location ~ .+\.php($|/) {
- root /var/www/html/website;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- #设置PATH_INFO,注意fastcgi_split_path_info已经自动改写了fastcgi_script_name变量,
- #后面不需要再改写SCRIPT_FILENAME,SCRIPT_NAME环境变量,所以必须在加载fastcgi.conf之前设置
- fastcgi_split_path_info ^(.+\.php)(/.*)$;
- fastcgi_param PATH_INFO $fastcgi_path_info;
- #加载Nginx默认"服务器环境变量"配置
- include fastcgi.conf;
- }
- }
0 0
- 最完美解决Nginx部署ThinkPHP项目的办法
- 最完美解决Nginx部署ThinkPHP项目的办法
- 最完美解决Nginx部署ThinkPHP项目的办法
- 最完美解决Nginx部署ThinkPHP项目的办法
- 解决Nginx部署ThinkPHP项目的办法
- Nginx 下部署ThinkPHP项目的办法
- 解决Nginx部署ThinkPHP
- 最完美ThinkPHP Nginx 配置文件
- nginx thinkPHP 部署项目出现的相关问题
- 让nginx完美支持Thinkphp的配置
- thinkphp比较完美的nginx配置
- 最新完美解决nginx支持thinkphp的PATH_INFO,URL格式的问题
- thinkphp nginx下面完美配置解决404 file not found
- nginx服务器下部署ThinkPHP的配置
- 部署NGINX+PHP+Thinkphp
- 在Nginx上部署ThinkPHP,解决Pathinfo问题
- thinkphp nginx下面完美配置解决404 file not found(让nginx支持PATHINFO路由模式)
- nginx+thinkphp下解决pathinfo的问题
- 冒泡排序乱序速度慢于逆序探究
- hadoop权威指南目录结构
- 网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解
- 为什么不能建立引用数组?
- 购买开发者账号 和 真机调试、打包、跳转AppStore评分、上架、内购细节
- 最完美解决Nginx部署ThinkPHP项目的办法
- MarkDown 语法
- JavaScript斐波纳契数列非递归算法
- 腾讯IEG面试失败经验总结
- C 源码学习——memcpy函数
- 文章标题
- Git 添加远程库
- IOS面试题汇总(中英文)
- OC学习笔记-Foundation框架(一)