狂欢‰一夜 发表于 2016-12-26 07:49:26

对于框架的 pathinfo 的 nginx 配置

    ECOS采用pathinfo做资源定位,所以要求$_SERVER环境变量中必须要有PATHINFO或则ORGI_PATHINFO
  一般在apache或者iis下都没有什么问题,但是在nginx下需要对配置文件做一些设置才可以
  把下面的代码保存为pathinfo.conf文件,存放在nginx的conf目录下

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;
  在站点的php引擎调用段的最下面包含这个文件就行了。下面提供一个真实的样例:


主配置文件

server
{
listen    80;
server_name 192.168.6.141;
index index.html index.htm index.php;
root /srv/http;
autoindex off;

location ~ .*\.php
{
   include php_fcgi.conf;
   include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
   expires   30d;
}

location ~ .*\.(js|css)$
{
   expires   1h;
}

access_log off;
location /nginx_status {
    stub_status on;
    access_logoff;

}
}
  这个地方有一个地方需要注意,就是对php文件的捕获必须是这样的形式

location ~ .*\.php
  以往的

location ~ .*\.php$
  形如/index.php/shopadmin/xxxx/yyyy这样的请求将不会进入php fastcgi处理器。


rewrite
  如果想把index.php也隐藏掉,可用下面的rewrite规则

location / {
if (!-e $request_filename) {
    rewrite ^/(.+\.(html|xml|json|htm|php|jsp|asp|shtml))$ /index.php/$1 last;
}
}

location ~ .*\.php
{
include php_fcgi.conf;
include pathinfo.conf;
}
页: [1]
查看完整版本: 对于框架的 pathinfo 的 nginx 配置