当前位置: 首页 > 知识库问答 >
问题:

php - ThinkPHP6 无法获取到 URL 参数问题?

刘嘉木
2023-12-19

thinkphp6 无法获取到url里的参数 用的是docker 部署的 nginx +php 7.4.33 在我的测试环境没有问题 放到另一个服务器里就获取不到参数了

伪静态是这个:

    location / {        if (!-e $request_filename){            rewrite  ^(.*)$  /index.php?s=$1  last;   break;        }    }

测试了是可以访问到index.php的 而且用index.php?a=b这样是可以获取到参数a的 但是我用index.php?s=aa就获取不到了

共有2个答案

长孙瑞
2023-12-19

改成这样试试。

location / {    try_files $uri $uri/ /index.php$uri$is_args$query_string;}
  • URL 访问
  • 弄清楚thinkphp的nginx配置问题
金钊
2023-12-19

这个问题可能是由于服务器配置或者路由规则的问题导致的。

首先,你的伪静态规则中,使用了 rewrite 指令将所有不存在的文件重写到 index.php,并且将原始的请求路径作为参数 s 传递给 index.php

如果你可以通过 index.php?a=b 获取到参数 a,那么服务器应该能够正确地传递参数。然而,当你使用 index.php?s=aa 时,无法获取到参数 s,可能是因为 s 参数被视为一个变量而不是一个查询字符串。

为了解决这个问题,你可以尝试以下方法:

  1. 确保服务器配置正确,允许传递查询字符串参数。这通常在服务器的配置文件中进行设置,例如 Apache 的 .htaccess 文件或者 Nginx 的配置文件。
  2. 尝试修改伪静态规则,将查询字符串参数放在括号中,例如:
location / {    if (!-e $request_filename){        rewrite  ^(.*)$  /index.php?s=$1  last;   break;    }}

改为:

location / {    if (!-e $request_filename){        rewrite  ^(.*)$  /index.php?s=$1& last;   break;    }}

这样可以在查询字符串末尾添加一个 & 符号,确保后续的参数不会被忽略。

  1. 确保你的 ThinkPHP 路由规则正确配置,以便能够正确解析 URL 参数。你可以检查 ThinkPHP 的路由配置文件,确保相关的路由规则正确匹配 URL 参数。
  2. 如果以上方法仍然无法解决问题,你可以尝试在 index.php 文件中使用 $_SERVER['QUERY_STRING'] 来获取查询字符串参数,例如:
$queryString = $_SERVER['QUERY_STRING'];parse_str($queryString, $params);$s = isset($params['s']) ? $params['s'] : '';

这样可以通过解析查询字符串来获取参数 s 的值。

希望这些方法能够帮助你解决问题。如果问题仍然存在,可以提供更多关于服务器配置、路由规则和 ThinkPHP 配置的信息,以便进一步排查问题。

 类似资料:
  • 本文向大家介绍jquery获取url参数及url加参数的方法,包括了jquery获取url参数及url加参数的方法的使用技巧和注意事项,需要的朋友参考一下 使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作,下面通过文字说明加代码分析的形式给大家解析,具体详情请看下文。 1、jquery获取url很简单,代码如下: 其实只是用到了javascript的基础的wind

  • 类似于H5中window.location,Nuke提供的Location包含了protocol、hostname、host、origin、pathname和search等属性。 Location 'use strict'; import {mount} from 'nuke-mounter'; import {createElement, Component} from 'weex-rx'; i

  • 普通(原生)URL模式下 http://YourDomain/index.php?m=user&a=center&uid=100 可以使用$_GET获取参数 $m = $_GET['m']; $a = $_GET['a']; $uid= $_GET['uid'];

  • 我试图通过JPA执行存储过程。我通过注释设置了存储过程: 该参数存在于数据库中,我正试图按如下方式调用该过程: 当我运行上面的代码时,我得到以下错误: 我卡在了由语句关闭引起的地方。我尝试过将它包装在事务中,但是实体管理器是共享的,我不能在那里创建事务。当我将它包装在事务模板中时,我得到了与上面相同的错误。 以下是正在使用的配置:

  • 问题内容: 我正在尝试使用Swift从URL获取参数。假设我有以下网址: 如何获取test1和test2的值? 问题答案: 您可以使用以下代码获取参数 像这样调用方法 其他扩展方法:

  • 本文向大家介绍jQuery获取URL请求参数的方法,包括了jQuery获取URL请求参数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery获取URL请求参数的方法。分享给大家供大家参考。具体如下: 调用方法如下: 希望本文所述对大家的jquery程序设计有所帮助。