首页 >社区问答列表 >nginx开启pathinfo模式,运行后index.php的index会被过滤

nginx开启pathinfo模式,运行后index.php的index会被过滤

服务器使用一键lnmp安装的,开启了pathinfo模式后发现使用header跳转时index会被过滤。

使用的是TP系统,U方法与header location之后会出现这种情况,

如`http://xx.com/index.php/a/b` 会变成`http://xx.com/.php/a/b`,而地址栏输入没有问题


贴上配置文件

1、站点conf


```

server

    {

        listen 80;

        #listen [::]:80;

        server_name xx.com ;

        index index.html index.htm index.php default.html default.htm default.php;

        root  /data;


        include none.conf;

        #error_page   404   /404.html;


        # Deny access to PHP files in specific directory

        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }


        #include enable-php.conf;


        include  enable-php-pathinfo.conf;


        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

        {

            expires      30d;

        }


        location ~ .*\.(js|css)?$

        {

            expires      12h;

        }


        location ~ /.well-known {

            allow all;

        }


        location ~ /\.

        {

            deny all;

        }


        access_log  xx.com.log;

    }


```

2、enable-php-pathinfo.conf


```

location ~ [^/]\.php(/|$)

        {

            fastcgi_pass  unix:/tmp/php-cgi.sock;

            fastcgi_index index.php;

            include fastcgi.conf;

            include pathinfo.conf;

        }

```


3、fastcig.conf


```


fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

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_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  REQUEST_SCHEME     $scheme;

fastcgi_param  HTTPS              $https if_not_empty;


fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;


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;

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";


```


4、pathinfo.conf


```

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

set $path_info $fastcgi_path_info;

fastcgi_param PATH_INFO       $path_info;

try_files $fastcgi_script_name =404;

```


  • ringa_lee
  • ringa_lee    2017-09-01 09:25:561楼

    index index.html index.htm index.php default.html default.htm default.php;

    你把前面的index去掉

    +0添加回复

  • 回复

    大哥这个是索引的标致,去掉就报错了

    Time丶Out · 2017-09-07 04:49:23
    回复

    我说的是第一个index,这个不需要,删掉就行了,留着后面带后缀就可以了

    ringa_lee · 2017-09-07 09:33:43
    回复