Web 服务器 · 2010/08/22 5

让你的 PHP Web服务器支持 PathInfo (For ThinkPHP)

最近准备做点东西,起初准备自己弄个框架的…但是由于了很久还是放弃了..自己开发框架的话,开发周期势必要延长,而且不一定好用,所以准备挑个现有的框架开发.

首先想到的是 Yii ,

一是因为我比较熟悉他,已经用Yii出了两个项目了.

二是因为Yii 确实很强大

但是Yii实在是太 Heavy 了,一个普通脚本跑跑要3M+的内存,对于准备在VPS上部署项目的我来说势必是个噩梦.

于是我转而将目光投向于轻量级的框架.经过几个小时的挣扎我选择了国产框架 ThinkPHP ,因为其文档相当清楚,最重要的是 古董 用过这框架,那我就可以少走弯路了哈哈…在自己写测试Demo的时候发现问题,我用的Nginx不支持 PathInfo ,那么下来我就说说PathInfo.

PathInfo 可以实现友好的URL路径,你甚至可以实现生成 demo.php/news/world/200901011124.html 这样对搜索引擎非常友好的URL,而无需使用重写…在这里我们仅仅需要访问 demo.php 即可,它的好处是显而易见的.

下面就是让大家知道如何在服务器开启PathInfo.

1.让 Apache 支持 PathInfo

配置的 Apache 版本 : 2.2.13

在配置文件中加入

<Files *.php>

AcceptPathInfo On

</Files>

这样 Apache 就可以支持针对 php 文件的 PathInfo 了.

2.让 Nginx 支持 PathInfo

在配置文件里添加

location ~ \.php

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

set $path_info “”;

set $real_script_name $fastcgi_script_name;

if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {

set $real_script_name $1;

set $path_info $2;

}

fastcgi_param SCRIPT_FILENAME /var/html/$real_script_name;

fastcgi_param SCRIPT_NAME $real_script_name;

fastcgi_param PATH_INFO $path_info;

include conf/fcgi.conf;

}

这里就是针对 .php 文件作出解析, 对 $fastcgi_script_name 做PathInfo 辨别,转换.将 php 文件后的 (/.+) 以 PATH_INFO 的FastCGI参数名称提交.

参考文案:http://bbs.thinkphp.cn/archiver/?tid-2790.html