时间:2021-05-19
概述
今天遇到一个问题,Ubuntu+Nginx+MySQL配置ThinkPHP的项目,做了一半发现,Nginx不支持ThinkPHP的PATH_INFO模式,百度了好久,在朋友的帮忙下才解决,记录下。
Nginx支持ThinkPHP的PATH_INFO
环境
Ubuntu 14.04+Nginx+MySQL。所有程序都是通过apt-get安装的,所以Nginx的配置文件路径在/etc/nginx/sites-available/default。
解决方法
定位到Nginx配置文件的如下部分:
复制代码 代码如下:location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
加入下面的代码:
复制代码 代码如下:
if (!-e $request_filename)
{
rewrite ^/myapp/(.*)$ /myapp/index.php?s=$1 last;
break;
}
正则的写法
解决这个问题的时候,看到了好几种解决方案,光正则就看到了好几个,也不知道到底哪个是最标准的,本人正则也不是很熟,先记录下来,以后慢慢研究:
正则1:
复制代码 代码如下:
rewrite ^/MYAPP/(.*)$ /MYAPP/index.php/$1 last;
正则2:
复制代码 代码如下:
rewrite ^(.*)$ /index.php?s=$1 last;
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近研究CI框架,发现这个框架的路由功能在Nginx下有问题,报404错误,后来在网上查资料,发现需要开启PATH_INFO。在nginx7.16以后貌似就支持
apache往nginx去转,代码端用到了$_SERVER['PATH_INFO'],对于nginx默认是不开启pathinfo的。所以我们就要手动开启1,ur
概述在上一篇文章Nginx配置Thinkphp支持URLRewrite中已经介绍了如何配置Nginx支持ThinkPHP的URLRewrite,但是上文针对的是
1.根据$_SERVER['PATH_INFO']来操作实现。举个列子比如你的网站的地址是http://127.0.0.1/show_new.php/look-
通过输出$GLOBALS可以看到'/'后的参数都存在于$_SERVER['PATH_INFO']里;声明一个数组来获取我们在'/'后传递的参数$arr=expl