首页  >  问答  >  正文

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_参数SERVER_NAME        $server_name;


# 仅适用于 PHP,如果 PHP 是使用 --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;

```

phpcn_u21629phpcn_u216292578 天前1384

全部回复(1)我来回复

  • ringa_lee

    ringa_lee2017-09-01 09:25:56

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

    你把前面的index去掉

    回复
    0
  • Time丶Out

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

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

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

    ringa_lee · 2017-09-07 09:33:43
  • 取消回复