让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享

 更新时间:2011年08月08日 19:22:02   作者:  
ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件。
网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了
复制代码 代码如下:

location /project/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/project/(.*)$ /project/index.php/$1 last;
break;
}
}

location ~ .+\.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include /APMServ/nginx/conf/fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root/$script;
fastcgi_param SCRIPT_NAME $script;
}

这里先把project下的请求都转发到index.php来处理,亦即ThinkPHP的单一入口文件;然后把对php文件的请求交给fastcgi来处理,并且添加对PATH_INFO的支持。
重启Nginx以后,http://localhost/project/Index/insert, http://localhost/project/index.php/Index/delete 这样的URL都可以正确访问了。
还有一个地方需要注意的是,Nginx配置文件里 if 和后面的括号之间要有一个空格,不然会报unknown directive错误。

相关文章

  • php 读取文件头判断文件类型的实现代码

    php 读取文件头判断文件类型的实现代码

    以下是对使用php实现读取文件头判断文件类型,支持图片、rar、exe等后缀进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • php实现URL加密解密的方法

    php实现URL加密解密的方法

    这篇文章主要介绍了php实现URL加密解密的方法,结合实例形式分析了php针对URL字符串进行加密解密操作的相关技巧,需要的朋友可以参考下
    2016-11-11
  • PHP乱码问题,UTF-8乱码常见问题小结

    PHP乱码问题,UTF-8乱码常见问题小结

    PHP乱码问题,UTF-8乱码问题比较常见,通过下面的方法基本上就可以解决php乱码问题了,确实总结的不错
    2012-04-04
  • php实现过滤字符串中的中文和数字实例

    php实现过滤字符串中的中文和数字实例

    这篇文章主要介绍了php实现过滤字符串中的中文和数字的方法,实例分析了php操作中文和数字匹配的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php实现TCP端口检测的方法

    php实现TCP端口检测的方法

    这篇文章主要介绍了php实现TCP端口检测的方法,实例分析了php操作tcp端口检测的技巧,需要的朋友可以参考下
    2015-04-04
  • PHP HTML代码串 截取实现代码

    PHP HTML代码串 截取实现代码

    将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字符是3个字节或者4个字节的,而显示的时候中文会占两个字符的长度,英文字符只占一个,全角的时候又有不同。
    2009-06-06
  • 如何在PHP中使用数组

    如何在PHP中使用数组

    这篇文章主要介绍了如何在PHP中使用数组,文中讲解非常细致,代码帮助大家更好的参考和学习,感兴趣的朋友可以了解下
    2020-06-06
  • PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法

    PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法

    这篇文章主要介绍了PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法,需要的朋友可以参考下
    2014-05-05
  • php常用hash加密函数

    php常用hash加密函数

    这篇文章主要介绍了php常用hash加密函数,以实例形式详细分析了PHP的hash加密函数用法,代码中备有详尽的注释,便于理解,需要的朋友可以参考下
    2014-11-11
  • Dedecms V3.1 生成HTML速度的优化办法

    Dedecms V3.1 生成HTML速度的优化办法

    Dedecms V3.1 生成HTML速度的优化办法...
    2007-03-03

最新评论