nginx不支持pathinfo函数

server {
        listen 80;
        server_name www.domain.com domain.com;
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;

        location ~ \.php {
                root /data0/htdocs/www;
                fastcgi_pass 127.0.0.1:9000;
                #包含nginx服务器传递给fastcgi程序的参数,php中通过$_SERVER[‘参数名‘]可获取
                include   fastcgi.conf;
                #定义变量$fastcgi_script_name_new赋值为$fastcgi_script_name变量
                set $path_info "";
                set $fastcgi_script_name_new $fastcgi_script_name;
                if ($fastcgi_script_name ~*  "^(.+\.php)(/.+)$") {
                        set $fastcgi_script_name_new $1;
                        set $path_info $2;
                }
                        #对fastcgi.conf中的SCRIPT_FILENAME和SCRIPT_NAME fastcgi参数进行重写
                        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name_new;
                        fastcgi_param   SCRIPT_NAME   $fastcgi_script_name_new;
                        #定义一个新的nginx服务器传递给fastcgi的参数PATH_INFO,thinkphp需要这个参数
                        fastcgi_param   PATH_INFO $path_info;
        }

        location / {
                root /data0/htdocs/www;
                index  index.html index.htm;
                if (!-e  $request_filename){
                        rewrite ^(.*)$ /index.php$1 last;
                }
        }
    }

tp支持PHPinfo

第二步:打开thinkphp框架的配置文件convention.php,

修改URL_MODEL=>1,采用pathinfo模式,别设置成2啊,因为nginx重写加上了index.php入口文件了。

第三步:在浏览器输入:www.domain.com,结果如下:

:)

欢迎使用 ThinkPHP!

[ 您现在访问的是Home模块的Index控制器 ]

第四步:在浏览器中输入URL时候,用rewrite形式的url,就是不要输入入口文件了,其它的不变和pathinfo模式一样,例如:
http://www.domain.com/module/controler/action/参数1/值1/参数2/值2/

网址中不再需要输入入口文件index.php了,因为在刚才重写时我们已经指定好了入口文件index.php。

第二步:打开thinkphp框架的配置文件convention.php,

修改URL_MODEL=>3,采用rewrite兼容模式,并且修改
‘VAR_PATHINFO‘=> ‘s‘, 重写时我们用的是s=""的形式.

第三步:在浏览器输入:www.domain.com,结果如下:

:)

欢迎使用 ThinkPHP!

[ 您现在访问的是Home模块的Index控制器 ]

第四步:在浏览器中输入URL时候,还是用rewrite形式的url,就是不要输入入口文件了,其它的不变,例如:
http://www.domain.com/module/controler/action/参数1/值1/参数2/值2/

网址中不再需要输入入口文件index.php了,因为在刚才重写时我们已经指定好了入口文件index.php。

时间: 2024-10-11 14:21:32

nginx不支持pathinfo函数的相关文章

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.

nginx不支持pathinfo 导致thinkphp出错解决办法

location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } 然后项目配置下url模式改为2 'URL_MODEL'=>2, location ~ \.php { #去掉$ root H:/PHPServer/WWW; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式

Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式 BY 孙 权 · 2014年8月6日 我的环境 系统 : Ubuntu12.04 x86_64 环境 : Nginx1.1.19+PHP5.3.10+Mongo2.6.3 由于公司要用Nginx+Mongo+PHP,所以我要把刚刚配置好的LAMP推翻,然后重新安装LNMP.软件安装就不在这里介绍了,如果有需要,可以看这里. 如何安装Nginx. 下面介绍如何使Nginx支持ThinkPHP的Pathinfo和URL

让Nginx支持pathinfo

布尔教育 PHP学习笔记 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_par

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

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

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+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

phpshe b2c商城系统配置nginx支持pathinfo和rewrite的写法

找到/usr/local/webserver/nginx/conf/nginx.conf文件(环境配置不一样,路径也可能不一样) 并在server {...省略掉的代码}中添加如下代码即可(如果程序放在根目录下用一级目录代码,放在二级目录,请用二级目录代码),改好后重启nginx: ###############开启pathinfo支持(如果已开启请忽略此处)############## location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcg

修改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