nginx+thinkphp下解决不支持pathinfo模式以及存在的各种404,500问题

nginx环境问题弄了两天,发现网上很多人的帖子要么复制粘贴,要么就是没有结贴,还自己写一句“哈哈,我自己解决了”之类的,这点我就鄙视这些发帖的同胞了,你说你问题问了,问题解决了也不给个解释。还在搜索的前几页,想没想过需要答案的人的感受呢。满心欢喜的去看答案,发现没有结贴。好吧,不多说,进入正题。

我这种方式是不需要将URL_Model改为rewrite/兼容的:

大约第43行,按照下面的对照自己的code进行修改,请注意细节的符号:

location / {
            root   C:/Zend/workspaces; #//这是你自己项目的根目录。
            index  index.html index.htm index.php;
            
            if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 break;    
            break;
            }
            
        }

在php的配置中,将location ~ \.php$ 改为 location ~ \.php,再次强调,注意细节,这里去掉了$符号,我刚开始也是因为这个原因一直没能解决。

location ~ \.php {
            root           C:/Zend/workspaces;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  C:/wnmp/php$fastcgi_script_name;
            include        fastcgi_params;
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }

如果仍未解决,在ThinkPHP入口文件index.php中加入配置define(‘_PHP_FILE_’,$_SERVER[‘SCRIPT_NAME‘]);

期间大家可能会遇到500,404的问题,但记住一点,细心就行。只要按照我这个改,基本没什么问题。如果还有问题,欢迎留言咨询。

解决方法来源参考:http://www.codesth.com/%E4%B8%8D%E7%94%A8rewrite%E5%85%BC%E5%AE%B9%EF%BC%8C%E8%A7%A3%E5%86%B3nginx%E4%B8%8D%E6%94%AF%E6%8C%81thinkphp-pathinfo%E6%A8%A1%E5%BC%8F/

时间: 2024-10-27 01:09:28

nginx+thinkphp下解决不支持pathinfo模式以及存在的各种404,500问题的相关文章

nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法

将一个thinkphp项目从apache环境移到nginx1.2上,怎奈,nginx这个版本默认不支持pathinfo模式 首先,编辑nginx的虚拟主机配置文件 location ~ .*.(php|php5)?$ { #原有代码 } if (!-e $request_filename) {   rewrite  ^(.*)$  /index.php?s=$1  last;   break;    } #去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo #如果你不需要用到p

配置Nginx支持pathinfo模式

Nginx服务器默认不支持pathinfo, 在需要pathinfo支持的程序中(如thinkphp),则无法支持”/index.php/Home/Index/index”这种网址.网上流传的解决办法很多,这里提供一种比较简洁的写法(只需要改动2行代码)典型配置location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $DOC

制作类似ThinkPHP框架中的PATHINFO模式功能(二)

距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.html)已经过去好多天了,今晚就将剩下的一些东西扫尾吧. 上一篇文章已经实现了PATHINFO模式的URL,即我们访问MVC模式搭建的站点时,只需要在域名后面加上(/module/controller/action)即可,很智能化.并且通过new Object时的自动触发函数实现类文件的自动载入,因此只要我们搭

修改Nginx解决ThinkPHP不支持PathInfo模式

最精简的Nginx配置 server { listen 80; server_name test.com; charset utf-8; location / { root E:/WWW/test; index index.php; if (!-e $request_filename) { #一定要用(.*)匹配整个URI,包含URI第一个字符反斜杠/ #rewrite ^(.*)$ /index.php?s=$1 last; rewrite ^/(.*)index.php(.*)$ $1/in

nginx不支持pathinfo模式解决方法

错误描述:1,打开网页,页面提示不支持pathinfo                  2,类似 index.php/hellworld 会提示找不到页面 解决办法:1,修改nginx.conf的server{} 中的内容下: 备注: 如果是在vhost配置下可单独添加在vhost配置文件下,如果没有vhost则在nginx.conf配置文件下添加 75         # pass the PHP scripts to FastCGI server listening on 127.0.0.

thinkphp 3.2 的pathinfo模式与控制器的关系

pathinfo有四种模式: 0:普通模式 也就是传统的GET传参方式来指定当前访问的模块和操作,例如: http://localhost/?m=home&c=user&a=login&var=value m参数表示模块,c参数表示控制器,a参数表示操作(当然这些参数都是可以配置的),后面的表示其他GET参数. 如果默认的变量设置和你的应用变量有冲突的话,你需要重新设置系统配置,例如改成下面的: 'VAR_MODULE' => 'module', // 默认模块获取变量 'V

nginx下TP5 隐藏入口文件+支持pathinfo模式+配置多项目根目录

首先说下项目目录情况  跟目录/usr/share/nginx/html/(别说怎么这么深  0.0) html文件夹下面两个目录 pssh  pssh_shop 两个tp5项目分别对应两个二级域名 配置多项目就把server{} 在复制出来一套 修改对应的root路径就可以 下面放上配置文件(只有域名2那个项目隐藏入口文件了 ) # For more information on configuration, see: # * Official English Documentation: h

lnmp1.0支持pathinfo模式

首先,在ssh中执行 touch /usr/local/nginx/conf/pathinfo.conf 创建pahtinfo.conf文件 然后在这个文件中添加以下内容 set $real_script_name $fastcgi_script_name;if ($fastcgi_script_name ~ "(.+?\.php)(/.*)") {set $real_script_name $1;set $path_info $2;}fastcgi_param SCRIPT_FILE

配置nginx1.7.8支持pathinfo模式

vi nginx/conf/nginx.conf 1.修改正则 set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){ set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_pa