nginx配置支持php的pathinfo模式配置方法

本文详细介绍了如何通过调整Nginx配置来支持PathInfo模式,适用于使用Concrete5CMS等需要使用PathInfo的场景。具体包括在nginx.conf中设置server和location块,以及在sfcgi.conf中实现对pathinfo的支持。

nginx模式不支持pathinfo模式,类似info.php/hello形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。在使用Concrete5 CMS的程序时候,会遇到这种情况。(不过还是推荐apache)
    

nginx配置实例:

## 在nginx.conf的server部分:
server {
listen 80;
server_name www.xxx.com xxx.com;
    location ~ \.php {
include sfcgi.conf;
include fcgi.conf
}
}
##要点: \.php 后面没有$,以便匹配所有 *.php/* 形式
##重点代码见 sfcgi.conf
sfcgi.conf 代码如下:
fastcgi_pass 127.0.0.1:9000;
##fastcgi_index index.php;
##上面这条会使得如果链接后面有/(比如www.xxx.com/search/)它会认为是下面的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 $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
## 以上是支持pathinfo的重点部分
    ## 以下是fcgi.conf部分
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
    fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
    # PHP only, required if PHP was built with --enable-force-cgi-redirect
#fastcgi_param REDIRECT_STATUS 200;

转载于:https://www.cnblogs.com/JosephLiu/archive/2011/07/29/2120609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值