修改nginx配置文件 支持php的pathinfo路径模式

  • 时间:
  • 浏览:0

  nginx模式默认是不支持pathinfo模式的,类事info.php/hello形式的url会被提示找只能页面。下面的通过正则找出实际文件路径和pathinfo每段的依据 ,让nginx支持pathinfo。

nginx配置实例:

  在nginx.conf的server每段:

server {

listen 3000;

server_name www.xxx.com xxx.com;

location ~ \.php {

include sfcgi.conf;

include fcgi.conf

}

}

  nginx配置支持pathinfo模式的重点在于 \.php 底下那末 $,能只能匹配所有 *.php/* 形式的地址。

  重点代码见sfcgi.conf 代码如下:

fastcgi_pass 127.0.0.1:9000;

##fastcgi_index index.php;

  底下这条会使得而且 链接底下有/(比如www.xxx.com/search/)它会认为是下面的index.php

  如下是支持pathinfo的重点每段:

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;

  以下是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 3000;
Tags: nginx   pathinfo   nginx配置pathinfo   nginx配置php  
责任编辑:190