• ThinkPHP3.2.3 Nginx 下 URL_MODEL 的配置


    ThinkPHP3.2.3 的 URL_MODEL 包括普通模式(0)、PATHINFO 模式(1)、REWRITE 模式(2)、兼容模式(3)等 4 种 URL 模式。在 Apache 下只要在配置文件 config.php 中配置 URL_MODEL 配合 .htaccess 就可以很容易地支持 REWRITE 模式。

    在 Nginx 下设置项目的 URL 模式可以参考 老朱亲自写的,最完美ThinkPHP Nginx 配置文件,支持以上 4 种 URL 模式。

    我测试的环境是 CentOS 6.6 + LNMP 1.2 (Nginx 1.8.0,MySQL5.6.23,PHP 5.6.9)+ ThinkPHP 3.2.3

    编辑 nginx.conf 文件:

    [root@localhost conf]# vim nginx.conf

    在项目的 Server 段中加入:

        location / {
            try_files $uri @rewrite;
        }
        location @rewrite {
            set $static 0;
            if  ($uri ~ .(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css.map|min.map)$) {
                set $static 1;
            }
            if ($static = 0) {
                rewrite ^/(.*)$ /index.php?s=/$1;
            }
        }
        location ~ /Uploads/.*.php$ {
            deny all;
        }
        location ~ .php/ {
           if ($request_uri ~ ^(.+.php)(/.+?)($|?)) { }
           fastcgi_pass 127.0.0.1:9000;
           include fastcgi_params;
           fastcgi_param SCRIPT_NAME     $1;
           fastcgi_param PATH_INFO       $2;
           fastcgi_param SCRIPT_FILENAME $document_root$1;
        }
        location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~ /.ht {
            deny  all;
        }

    项目完整的 Server 段:

    server
    {
            listen 80;
            server_name www.tpblog.com;
            index index.html index.htm index.php;
            root  html/www.tpblog.com;
    
            #error_page   404   /404.html;
            include enable-php.conf;
    
            location /nginx_status
            {
                stub_status on;
                access_log   off;
            }
    
            #rewrite
            location / {
                    try_files $uri @rewrite;
            }
    
            location @rewrite {
                    set $static 0;
                    if  ($uri ~ .(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css.map|min.map)$) {
                            set $static 1;
                    }
                    if ($static = 0) {
                            rewrite ^/(.*)$ /index.php?s=/$1;
                    }
            }
            location ~ /Uploads/.*.php$ {
                    deny all;
            }
            location ~ .php/ {
                    if ($request_uri ~ ^(.+.php)(/.+?)($|?)) { }
                    fastcgi_pass 127.0.0.1:9000;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_NAME     $1;
                    fastcgi_param PATH_INFO       $2;
                    fastcgi_param SCRIPT_FILENAME $document_root$1;
            }
            location ~ .php$ {
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include fastcgi_params;
            }
            location ~ /.ht {
                    deny  all;
            }
            #rewrite结束
    
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
    
            location ~ .*.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.
            {
                deny all;
            }
                    access_log  /home/wwwlogs/access_tpblog.log  access;
    
    }

    参考:老朱亲自写的,最完美ThinkPHP Nginx 配置文件

  • 相关阅读:
    spring-mvc----数据库数据到页面错误--tomcat启动不了
    springmvc注解@RequestMapping
    数据库到jsp页面报错(一)
    IDEA秒退或者一直让填写激活码问题
    spting Boot 创建一个springBoot项目
    SSM框架整合(实现从数据库到页面展示)
    asp.net dbproviderfactory(提供程序工厂模型)多数据库访问
    connectionStrings 中的 providerName 属性
    IDisposable
    利用提示引导语句运行
  • 原文地址:https://www.cnblogs.com/dee0912/p/5208002.html
Copyright © 2020-2023  润新知