$request->all () 获取参数时会多出一个接口的 uri,请问这个怎么去掉

写代码的时候发现在用request->all()接收参数时,会多出一个接口的uri file
如图中的v1/exam/chapter。请问这个怎么去掉。环境是nginx+php7.2。

Egfly
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

首先,建议你尝试在 oa-api 这一 Server 的 location ~ \.php { 后追加 fastcgi_split_path_info ^(.+\.php)(/.+)$; 试试看是否有效果。参考链接:http://nginx.org/en/docs/http/ngx_http_fas...

其次,该配置存在很多问题。例如,重写规则可以写的更简洁:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location 块匹配 php 文件应当带上匹配行尾的 $

    location ~ \.php$ {
         # ...
    }

先修改 fastcgi_param SCRIPT_FILENAME 随后又 include fastcgi_params;,若 fastcgi_params 文件存在该参数,将会导致覆盖你在该文件内定义的变量值,因此应当调整顺序为:

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME ...;
5年前 评论
讨论数量: 7
Egfly

个人感觉应该是nginx的配置问题,但查了很久都没结果。求各位大佬帮下忙。谢谢

5年前 评论

是的,你怀疑的没错,应该是 Nginx 与 PHP-FPM 通信的配置有误,请贴出 Nginx 的配置,以及你请求时使用的完整 URL。

5年前 评论
Egfly

@Wi1dcard


user  root root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        error_log /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;

        root /usr/share/nginx/html/code/saaslaravel/public;

        index index.php index.html index.htm;
        location / {                  

        }  

        location ~ \.php$ {  
            fastcgi_pass   127.0.0.1:9000;  
            fastcgi_index  index.php;  
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
            include        fastcgi_params;      
            try_files $uri =404;  
        }
    }

    server {
        listen       80;
        server_name  saas-admin-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    server {
        listen       80;
        server_name  saas-saas-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

    server {
        listen       80;
        server_name  saas-exam-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
     server {
        listen       80;
        server_name  saas-parent-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    } 
    server {
        listen       80;
        server_name  saas-student-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    } 
    server {
        listen       80;
        server_name  saas-est-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    } 
    server {
        listen       80;
        server_name  oa-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }  
    server {
        listen       80;
        server_name  tmr-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    server {
        listen       80;
        server_name  admin-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    server {
        listen       80;
        server_name  est-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    server {
        listen       80;
        server_name  teach-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    server {
        listen       80;
        server_name  sre-api.517rxt.test;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/api.laravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    } 
    server {
        listen       80;
        server_name  saas-api.517rxt.com;
        error_log /var/log/nginx/saas-api.517rxt.test/error.log;
        access_log /var/log/nginx/saas-api.517rxt.test/access.log;

        set $root_path '/usr/share/nginx/html/code/saaslaravel/public';
        root $root_path;

        index index.php index.html index.htm;
        try_files $uri $uri/ @rewrite;

        location @rewrite {
            rewrite ^/(.*)$ /index.php?$1;
        }

        location ~ \.php {
            try_files $uri $uri/ /index.php?$query_string;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  /index.php;
            fastcgi_param  SCRIPT_FILENAME  $root_path$fastcgi_script_name;
            include        fastcgi_params;
        }
    }  
    server {
      listen       80;
      root   /usr/share/nginx/html/code/rxt;

      index index.php index.html index.htm;
      server_name  517rxt.rxt.com;

      #charset koi8-r;
      #access_log  /var/log/nginx/log/host.access.log  main;

      location / {
          index  index.php admin.php default.php index.html index.htm;
        #add_header 'Access-Control-Allow-Origin' '*'; 
        #add_header 'Access-Control-Allow-Credentials' 'true'; 
        #add_header 'Access-Control-Allow-Methods' 'GET,POST';
        #rewrite ^(.*)\/index.php(.*)$ $1/index.php?s=$2;
        #rewrite ^(.*)\/(.*).php(.*)$ $1/$2.php?s=$3;
      }

      location ^~ /data {
        deny all;
      }
      location ^~ /runtime {
        deny all;
      }
      location ^~ /export {
        deny all;
      }
      location ^~ /application {
        deny all;
      }
      location ^~ /plugins {
        deny all;
      }
      location ^~ /thinkphp {
        deny all;
      }
      location ^~ /vendor {
        deny all;
      }

      gzip          on;
      gzip_min_length   1k;
      gzip_buffers 4    16k;
      gzip_comp_level   7;
      gzip_types        text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
      gzip_vary     off;
      gzip_disable      "MSIE[1-6]\.";

      #error_page  404              /404.html;

      # redirect server error pages to the static page /50x.html
      #
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   /usr/share/nginx/html;
      }

      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      #
      #location ~ .php$ {
      #    fastcgi_pass   127.0.0.1:9000;
      #    fastcgi_index   index.php;
      #    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      #    include        fastcgi_params;
      #}
      location ~ \.php(.*)$ {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_split_path_info  ^(.+\.php)(.*)$;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          fastcgi_param  PATH_INFO  $fastcgi_path_info;
          fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
          keepalive_timeout 6000;
          fastcgi_connect_timeout 6000;
          include        fastcgi_params;
      }
    }

    include /etc/nginx/conf.d/*.conf;
}
5年前 评论

首先,建议你尝试在 oa-api 这一 Server 的 location ~ \.php { 后追加 fastcgi_split_path_info ^(.+\.php)(/.+)$; 试试看是否有效果。参考链接:http://nginx.org/en/docs/http/ngx_http_fas...

其次,该配置存在很多问题。例如,重写规则可以写的更简洁:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location 块匹配 php 文件应当带上匹配行尾的 $

    location ~ \.php$ {
         # ...
    }

先修改 fastcgi_param SCRIPT_FILENAME 随后又 include fastcgi_params;,若 fastcgi_params 文件存在该参数,将会导致覆盖你在该文件内定义的变量值,因此应当调整顺序为:

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME ...;
5年前 评论
Egfly

@Wi1dcard 万分感激,我先试试

5年前 评论
Egfly

@Wi1dcard 非常感谢,正如大佬你说的,把include放在上面就不会有这个路由了

file

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!