文档章节

解决阿里云 装LNMP,ThinkPHP代码出现只能访问主页,其他跳转404

issac宝华
 issac宝华
发布于 2016/03/19 21:58
字数 727
阅读 1674
收藏 1

pathinfo是什么:

path_info不是nginx的功能,它是php的功能。php有两个pathinfo,一个是环境变量$_SERVER['PATH_INFO'] ,另一个是函数path_info();

path_info()的功能是可以将输入的url做判断,并返回对url的解析,但nginx并不是作用于它。

想要对他们两个有更深入了解可以去这里看看:

http://www.2cto.com/os/201212/176543.html

nginx可以可设置的是$_SERVER['PATH_INFO']的值。

$_SERVER['PATH_INFO']的作用是返回url的一部分,并用与重写。


nginx的配置:

进入阿里云的控制台,输入命令 : cd usr/local/nginx/conf回车(这是我阿里云的linux的nginx配置文件的路径,不知道别人家的会不会不同,不同也没关系,反正目标是nginx.conf文件),进入的conf文件夹,继续输入命令 vim nginx.conf回车

打开了nginx.conf配置文件,按 i 键,找到http下的server下开始配置:

     location / {        
     if (!-e $request_filename) {
             rewrite  ^/(.*)$  /index.php/$1  last;
                     break;
             }
     }
      
     location ~ \.php {
         fastcgi_pass 127.0.0.1:9000;  //这里不用担心你的服务器的ip是否和这个不一样,不用怀疑,
         //这样写就行了
         fastcgi_index index.php;
         include fcgi.conf;
         set $script $fastcgi_script_name;
         if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
         //上行的if和“(”间要有空格,这是lunix的语法,不然会报错
         //报位置变量
             set $script $1;  //注意这里是1234的1不是字母l
             set $path_info $2;
         }
         fastcgi_param SCRIPT_FILENAME $document_root$script;
         fastcgi_param SCRIPT_NAME $script;
         fastcgi_param PATH_INFO $path_info;
     }


到这里就完成配置,接下来就重启一下nginx,我不晓得别的重启方法,我的重启方法是重启amh我使用了amh面板的,另外说一句amh的重启命令。先是cd回根目录,找etc目录,cd进去,然后输入:init.d/amh-start回车。

还有另外一种配置方法:

location ~ \.php {    #去掉$
     root          H:/PHPServer/WWW;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句
     fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;
 }

接下来的步骤和上面一样。

这两种方法我都实践过,都是可以支持ThinkPHP的,但是第二种有点缺陷,我原先放在阿里云的用原生PHP的写的Web就访问不了,然后我换了第二种配置,完美支持。

题外:

Apache是默认支持path_info, 而nginx不支持,对于刚接触的人可能会因为觉得配置nginx的pathinfo会很麻烦而止步,装回Apache。我想说请不要这么做,因为比起Apache,nginx更加稳定更加强大,而且我们因为麻烦就止步,这可不是进步的节奏。

这是一篇分析Apache和nginx的技术blog:http://www.cnblogs.com/huangye-dream/p/3550328.html



© 著作权归作者所有

issac宝华
粉丝 9
博文 140
码字总数 34397
作品 0
珠海
私信 提问
ngnix+fastcgi+thinkphp3.2 404重定向的问题

昨天一网友说自己用thinkphp做的程序无法做404重定向。 当时我就挺纳闷的thinkphp做404也是挺简单的,只要在配置文件里面加上一条‘ERROR_PAGE' =>'/404.html'就好了,怎么会无法重定向呢? ...

豚鼠窝窝
2014/08/29
0
0
威胁快报| ThinkPHP v5 新漏洞攻击案例首曝光,阿里云已可告警并拦截

2018年12月10日,ThinkPHP v5系列发布安全更新,修复了一处可导致远程代码执行的严重漏洞。阿里云态势感知已捕获多起基于该漏洞的真实攻击,并对该漏洞原理以及漏洞利用方式进行分析。现在,...

云安全专家
01/02
0
0
全面拥抱云时代 ThinkPHP 云引擎版本发布

互联网领域的云平台化已经成为云时代基础架构新创领域的方向之一,云时代的需求与技术创新也是不少开发者为之考虑和前进的未来方向。云计划,云产品,云应 用,云享受,随着云服务的大力深入...

流年
2013/01/29
5.5K
27
用ThinkPHP3.2.2框架做手机和PC端浏览器的切换

ThinkPHP搭建手机版网站: http://www.php100.com/html/php/lei/2013/0904/1699.html 这篇文章(肯定不是基3.2.2讲的)是在框架入口通过判断手机还是PC访问来决定app的路径,这样,我手机web...

有个地方叫作遥远
2014/09/27
0
9
7个使用和不使用ThinkPHP的理由

花了几个星期时间想完成下面两篇文章(7个使用ThinkPHP的理由、7个不使用ThinkPHP的理由),但是绞尽脑汁还是没能完成,下周打算给公司员工做ThinkPHP的培训,于是上来问一下大家有没有什么好...

黄冠能
2015/11/17
5.8K
16

没有更多内容

加载失败,请刷新页面

加载更多

Disable Autostart of MySQL Server on Ubuntu

OSC Markdown Editer 真香,笔记一篇,懒得转中文,如有表述问题,请不吝指出,先谢为敬! OS: Ubuntu 19.04 When the MySQL server is installed, it automatically started with the OS. I...

Iridium
18分钟前
0
0
OpenStack RDO + S3

Packstack(RDO) installation "sync db timeout" issue version: openstack-packstack-13.0.0-0.1.0rc1.el7.noarchopenstack-packstack-puppet-13.0.0-0.1.0rc1.el7.noarch add timeout =>......

Firxiao
21分钟前
0
0
java运算符的优先级

https://www.cnblogs.com/zjfjava/p/5996666.html

南桥北木
26分钟前
0
0
线性代数的静态观-向量空间(一)

向量是一个具有大小和方向的量,因此只要大小与方向相同则向量也相同,从而向量可以自由平行移动。 向量与点不同,它反映的是从A到B的位移(既包含位移的方向又包含位移的大小),而点仅仅是...

FAT_mt
27分钟前
0
0
Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存穿透、缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中...

architect刘源源
48分钟前
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部