Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式

 更新时间:2015年07月02日 10:44:44   投稿:junjie  
这篇文章主要介绍了Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式,Ubuntu下的配置会有一些不同之处,需要的朋友可以参考下

概述

在上一篇文章Nginx配置Thinkphp支持URL Rewrite中已经介绍了如何配置Nginx支持ThinkPHP的URL Rewrite,但是上文针对的是Centos平台,这次因为某些特殊的原因,服务器环境必须用ubuntu,本来以为和Cetons中一模一样,但是配置完了发现不能使用,所以就百度了一些文章。

配置方法
TP官方解决方案

复制代码 代码如下:

location ~ .php
        {
                #原有代码
               
                #定义变量 $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_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
        }

这样,nginx服务器就可以支持pathinfo了。但是如果要支持ThinkPHP的URL_MODE设置为2的模式,还需要配置rewrite规则。找到access_log语句,在其上方加上以下语句:
复制代码 代码如下:

#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
    if (!-e $request_filename)
    {
            #地址作为将参数rewrite到index.php上。
            rewrite ^/(.*)$ /index.php/$1;
            #若是子目录则使用下面这句,将subdir改成目录名称即可。
            #rewrite ^/subdir/(.*)$ /subdir/index.php/$1;
    }

网友解决方案
复制代码 代码如下:

location / {
                root /var/www;
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
                if (!-e $request_filename)
                {
                        rewrite ^/PHPParser/(.*)$ /PHPParser/index.php?s=$1 last;
                        break;
                }
        }

然后在localhost ~ .php{}配置栏目中添加如下两行:

复制代码 代码如下:

fastcgi_split_path_info ^(.+\.php)(.*)$;                            
fastcgi_param PATH_INFO $fastcgi_path_info;

完整配置如下:
复制代码 代码如下:

location ~ \.php$ {
                root /var/www;
                try_files $uri = 404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
        #       # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

相关文章

  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • nginx配置https的方法示例(免费证书)

    nginx配置https的方法示例(免费证书)

    这篇文章主要介绍了nginx配置https的方法示例(免费证书),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Centos系统中如何在指定位置下安装Nginx

    Centos系统中如何在指定位置下安装Nginx

    这篇文章主要介绍了Centos系统中如何在指定位置下安装Nginx,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 基于域名、端口和IP搭建nginx虚拟主机

    基于域名、端口和IP搭建nginx虚拟主机

    本文给大家分享基于域名、端口和IP搭建nginx虚拟主机的内容,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-11-11
  • nginx+tomcat实现负载均衡,使用redis session共享

    nginx+tomcat实现负载均衡,使用redis session共享

    这篇文章主要介绍了nginx tomcat负载均衡 使用redis session共享,有兴趣的同学可以了解一下。
    2016-12-12
  • 升级nginx以支持http2的方法

    升级nginx以支持http2的方法

    本篇文章主要介绍了升级nginx以支持http2的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 详解Nginx服务器中的日志相关配置

    详解Nginx服务器中的日志相关配置

    这篇文章主要介绍了详解Nginx服务器中的日志相关配置,Nginx是拥有高性能的异步非阻塞型服务器,需要的朋友可以参考下
    2015-08-08
  • 用nginx搭建简单的文件下载服务器的方法

    用nginx搭建简单的文件下载服务器的方法

    本篇文章主要介绍了用nginx搭建简单的文件下载服务器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Linux下Tomcat+Nginx服务器环境安装配置的简明教程

    Linux下Tomcat+Nginx服务器环境安装配置的简明教程

    以Nginx作为反向代理再用Tomcat驱动Java Web程序是当今很流行的一种方案,那么这里我们就着眼于最基本的生产环境搭建,一起来看一下Linux下Tomcat+Nginx服务器环境安装配置的简明教程
    2016-05-05
  • 一台nginx服务器多域名配置的方法

    一台nginx服务器多域名配置的方法

    本篇文章主要介绍了一台nginx服务器多域名配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论