• 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

     
  • 相关阅读:
    开发ProxyServer的时候如何在一台PC上调试
    eclipse使用replace命令替换整个project/workspace的某个字符串
    android程序获取WIFI的IP地址和MAC地址
    将web项目deploy到tomcat的方法
    Windows下搭建Android开发环境
    解决:并排的两个div底部对齐
    eclipse调试jsp中的scriptlet代码
    棋盘覆盖(递归分治问题)
    Java中sleep()和wait()的区别
    Random()方法的使用
  • 原文地址:https://www.cnblogs.com/guangxiaoluo/p/4165059.html
Copyright © 2020-2023  润新知