MNMP下nginx1.6开启支持pathinfo配置,支持thinkphp的URL格式

对于thinkphp框架项目的访问格式有多种,其中pathinfo是默认的基本访问格式,格式为:http://hostname:port/index.php/模块名/action名/参数1/参数1的值/

pathinfo其实就是一个参数,可以通过$_SERVER[‘PATH_INFO‘]获得,thinkphp框架通过解析它来找到对应的模块和方法。

apache服务器默认是支持pathinfo的,但是nginx服务器默认不支持这种格式,需要进行配置,配置方式如下:

以下是mac下的MNMP中的nginx配置

1. 找到ngingx的配置文件nginx.conf

在server里的location项,

修改前为:

server {
        listen       7888;
        server_name  local.tpdemo.com;
        root 	/Applications/MAMP/htdocs/thinkphp_demo/;

		access_log          /Applications/MAMP/logs/nginx_tpdemo_access.log;
		error_log            /Applications/MAMP/logs/nginx_tpdemo_error.log debug;

        location / {
            index  index.html index.htm index.php;
			location ~ \.php {
				try_files        $uri =404;
				fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
				fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
				include          fastcgi_params;
			}
        }
    }

  

修改后为:

server {
        listen       7888;
        server_name  local.tpdemo.com;
        root 	/Applications/MAMP/htdocs/thinkphp_demo/;

		access_log          /Applications/MAMP/logs/nginx_tpdemo_access.log;
		error_log            /Applications/MAMP/logs/nginx_tpdemo_error.log debug;

        location / {
            index  index.html index.htm index.php;               #重写隐藏掉index.php部分
                	#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
			if (!-e $request_filename)
		    {
		        #地址作为将参数rewrite到index.php上。
		        rewrite ^/(.*)$ /index.php/$1;
		        #若是子目录则使用下面这句,将subdir改成目录名称即可。
		        #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
		    }
			location ~ \.php {
				try_files        $uri =404;
				fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
				fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
				include          fastcgi_params;
		   #定义变量 $path_info ,用于存放pathinfo信息
	            set $path_info "";
	            #定义变量 $real_script_name,用于存放真实地址
	            set $real_script_name $fastcgi_script_name;
	            #如果地址与引号内的正则表达式匹配
	            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
	                    #将文件地址赋值给变量 $real_script_name
	                    set $real_script_name $1;
	                    #将文件地址后的参数赋值给变量 $path_info
	                    set $path_info $2;
	            }
	            #配置fastcgi的一些参数
	            fastcgi_param SCRIPT_NAME $real_script_name;
	            fastcgi_param PATH_INFO $path_info;
			}
        }
    }

  

  

2. 编辑php.ini文件
注释掉配置项cgi.fix_pathinfo(前面加;)
3.重启phpcgi 和 nginx

时间: 2024-10-19 11:18:21

MNMP下nginx1.6开启支持pathinfo配置,支持thinkphp的URL格式的相关文章

Window下Nginx1.6+Tomcat6+Memcached精简配置

总体思路:本机安装Nginx,分发到192.168.0.10.192.168.0.11两台Tomcat服务器,192.168.0.12安装Memcached,两台Tomcat服务器通过Memcached共享Session.(当然全部部署到同一台电脑也可以,配置好端口就行) 一.Nginx1.6 1.配置conf/nginx.conf: (1)http {}中添加: upstream 127.0.0.1{         server   192.168.0.10:8080;         se

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下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持

前面有关于lnmp环境的搭建,在此就不在赘述.下面就简述thinkPHP如何在nginx下开启url_rewrite和pathinfo模式支持 主要有两个步骤: 一.更改php.ini将;cgi.fix_pathinfo=0  改为cgi.fix_pathinfo=1 二.更改nginx配置文件中php的location设置pathinfo模式: location ~ \.php { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index in

Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持

打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化.如果你配置了vhost,而且只需要你这一个vhost支持pathinfo的话,可以直接打开你的vhost的配置文件.找到类似如下代码(不同版本的nginx可能稍有不同,但是相差不会很远): location ~ .*.(php|php5)?$ { #原有代码 } 修改成以下代码: #去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo #如果

配置nginx使之支持pathinfo

phalcon项目,oneinstack环境lnmp.配置文件:/usr/local/nginx/conf/vhost/dldh.ccc.conf自动生成的. 问题:除首页外,其他都打不开,且样式文件也打不开.http://dldh.ccc/index.php/back/css/bootstrap.min.csshttp://dldh.ccc/index.php/backend/index/index都报: Access denied. 解决办法:作修改如下. server { listen 8

iis6下配置支持.net4.0&发布网站[转]

iis6配置支持.net4.0 在win2003操作系统上发布两个网站,首先配置iis: 1.下载 .net framework 4.0   差不多48MB 2.安装 3.打开iis: 开始=>管理工具=>Internet 信息服务(IIS)管理器 4.点击管理器中的“web服务扩展”,刚刚安装的.net framework 4.0 就会出现在右边,选择并允许 这样就配置好了 有时还要同时配置.net framework 3.5和.net framework 4.0 才可以,那就再配置一次3.

夺命雷公狗---linux NO:38 linux下nginx的pathinfo的支持

我们在nginx 中使用 thinkphp   的时候会遇到很多的问题,比如: 没权限,这个就是linux  权限管理的好处,我们给他权限.. 我们给他权限即可正常访问了: 然后我们为 IndexController  控制器下添加一个lists的方法: 然后我们添加一个lists的方法,如下所示: 保存退出.对她进行访问.. 没戏...因为nginx 不支持php后面的url 那里带斜线和后面带一串的参数..所以我们要想办法让他支持pathinfo.. 不过我们先来windows下的apach

配置nginx支持pathinfo

服务器运行的nginx+php,centos的系统.因需新部署一个网站,需要配置nginx支持pathinfo功能.网上各种查资料,终于搞定. 首先查看php.ini文件,查找cgi.fix_pathinfo=0,如不是0,改为0.重启php程序. 然后修改nginx配置文件: location ~ \.php {                    ------(去掉php后面的$) fastcgi_pass   127.0.0.1:9000; fastcgi_index  index.ph

Windows2003/2008/2008 R2下易语言点支持库配置就退出的问题

问题: 请问一个问题,我的电脑上win2003系统的,安装了易语言后,一点支持库配置就会自动退出.这是为什么啊? 解决方法如下: 删除 lib下的wmp.npk,重新打开易语言就可以了.