thinkphp6通过param、get、post等获取参数时多了一个路径参数url key
网站换服务器,上线后发现存数据的时候报错。看了一下在ThinkPHP6 通过param、get、post等获取参数多出一个路径rul key参数。导致存数据的时候报错了
解决办法:
以apache为例,我们可以发现thinkphp5.0和thinkphp6的伪静态配置文件.htaccess有一点不一样,就是在最后一行不一样。thinkphp5.0的默认.htaccess内容如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
而thinkphp6的默认.htaccess内容如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
通过实测可以知道,只要把老版本默认的.htaccess最后一行覆盖thinkphp6默认的.htaccess的最后一行即可,也就是
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
即可。