zoukankan      html  css  js  c++  java
  • nginx完美支持thinkphp3.2.2(需配置URL_MODEL=>1 pathinfo模式)

    来源:http://www.thinkphp.cn/topic/26657.html

    第一步:配置SERVER块

    server {
           listen 80;
           server_name www.domain.com domain.com;
           error_page 404 /404.html;
           error_page 500 502 503 504 /50x.html;
           # .php 只处理动态请求,对于静态资源请求由下面的 location匹配和处理
           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;
                 # 判断url是否是pathinfo形式的,如果是则把这个url分割成两部分,
                 # index.php入口文件之后的pathinfo部分存入$path_info变量中,
                 # 剩下的部分和$document_root根目录定位index.php入口文件在文件系统中的绝对路径 .
    
                 if ($fastcgi_script_name ~*   "^(.+.php)(/.+)$"  ) {
                      set $fastcgi_script_name_new $1;
                      set $path_info $2;
                 }
                        
                 # 对fastcgi.conf中的SCRIPT_FILENAME和SCRIPT_NAME fastcgi参数进行重写,
                 # 目的是指定入口文件在文件系统中的绝对路径给script_filename参数,让fastcgi知道index.php文件位置。
                 fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name_new;
                 fastcgi_param   SCRIPT_NAME   $fastcgi_script_name_new;
                 #定义一个新的nginx服务器传递给fastcgi的参数PATH_INFO,thinkphp需要这个入口文件index.php后的pathinfo信息
                 fastcgi_param   PATH_INFO $path_info;
             }
            # 用来匹配静态资源,如果不是静态资源就重写,然后重新轮训所有的location块,
            # 由上面的location块匹配后动态处理这个请求
            location / {
                 root /data0/htdocs/www;
                 index index.php index.html index.htm;
    
                 if (!-e  $request_filename){
                      rewrite ^(.*)$ /index.php$1 last;
                 }
            }
     }
    

      

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

    修改URL_MODEL=>1,采用pathinfo模式,别设置成2啊,因为nginx重写加上了index.php入口文件了,也就是最终发送到thinkphp的url是pathinfo模式的。

    第三步:在浏览器输入:www.domain.com或者www.domain.com/index.php结果如下:

    :)

    欢迎使用 ThinkPHP!

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

    第四步:在浏览器中输入URL时候,用pathinfo形式的url和用rewrite形式的url两者中的任何都可以,或者不用这两个框架形式的url, 用一般形式的url。例如:

    pathinfo形式:
    http://www.domain.com/index.php/module/controler/action/参数1/值1/参数2/值2/

    rewrite形式(就是不要输入入口文件了,其它的和pathinfo模式一样)
    http://www.domain.com/module/controler/action/参数1/值1/参数2/值2/

    一般形式的url,不通过index.php入口文件启动框架,也就是不用框架
    http://www.domain.com/test.php?par1=value1&par2=value2
    这时候需要在/data0/htdocs/www这个目录下存在自定义的test.php文件,就可以直接访问这个php文件了。

  • 相关阅读:
    RN组件的生命周期
    调试菜单
    React Native 之项目的启动
    React Native 之组件的定义
    Es6 之 const关键字
    2019年开发App记录
    upc-魔法石01字符串ab字符串变换问题——尺取
    中石油训练混合训练第七场
    魔法序列-upc
    MAX 的读书计划——dp
  • 原文地址:https://www.cnblogs.com/morgan363/p/11686961.html
Copyright © 2011-2022 走看看