thinkphp5 获取get参数时,把路径也当成参数的错误处理 背景: 最近项目中在使用request()->get()或者request()->param()时,经常出现把路径当成参数传递进来,导致报错的情况。 寻寻觅觅找了很多方法都不得而果,最后没办法只能使用指定变量的方式获得值,暂时解决问题。 但是反反复复出现问题确实很心烦,而且以前不会发生这种情况,看来是时候找出罪魁祸首。 操作: 首先想到的是看看官方封装的request类对于get请求的操作。 /** * 设置获取GET参数 * @access public * @param string|array $name 变量名 * @param mixed $default 默认值 * @param string|array $filter 过滤方法 * @return mixed */ public function get($name = '', $default = null, $filter = '') { if (empty($this->get)) { $this->get = $_GET; } if (is_array($name)) { $this->param = []; return $this->get = array_merge($this->get, $name); } return $this->input($this->get, $name, $default, $filter); } 我擦,如果是空的,直接赋值超变量$_GET。验证打印下。  WHAT?使用自带的$_GET也把路径打印出来了,脑子一转,那肯定是apache出了问题了。 百度了一份多站点参数配置的标准格式,对比后,发现一样啊,奇怪。 各种找资料是不是apache的哪个配置决定着变量。苦寻半小时,配置文件的所有说明都看了,实在找不到。 冷静下来仔细思考。 决定路径规则的除了apache应该还有转发规则,而我们为了实现隐藏index.php,实际是配置了一个.htaccess的文件的。而且转发规则是复制的官方的,理论不会出错。 不管了,先仔细看看官方文档,是否有遗漏的地方。  翻翻评论。 有位大哥这么说: apache那个有问题吧?,不行的话试试下面的 Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] 复制,重启apache,好了。 解决了我最苦恼的一个问题。连百度都不知道搜什么关键字的问题。 /哭