登录  /  注册
nginx开启pathinfo模式,运行后index.php的index会被过滤
phpcn_u21629
phpcn_u21629 2017-08-31 20:44:51
[PHP讨论组]

服务器使用一键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;

```


phpcn_u21629
phpcn_u21629

全部回复(1)
ringa_lee

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

你把前面的index去掉

  • 回复 大哥这个是索引的标致,去掉就报错了
    Time丶Out 作者 2017-09-07 04:49:23
  • 回复 我说的是第一个index,这个不需要,删掉就行了,留着后面带后缀就可以了
    ringa_lee 作者 2017-09-07 09:33:43
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号