thinkphp6和VUE3分别有自己的路由处理,所在部署在一个站点时,会出现路由冲突的问题
目录结构
这时候直接访问 http://域名/dist/ 时可以正常访问,
虽然也可以正常跳转,比如: http://域名/dist/login
但是如果刷新便会出现错误
这个就是路由冲突了,因为thinkphp里没有这个控制器,可以正常访问dist,是因为dist是publish下的一个目录
这时候只需要修下一个伪静态就可以了
apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^api(.*)$ index.php?/$1 [QSA,PT,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^dist/ /dist/index.html [L]
</IfModule>
如果还有其它的VUE3前端,再增加一条就行了
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^api(.*)$ index.php?/$1 [QSA,PT,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^dist/ /dist/index.html [L]
RewriteRule ^user/ /user/index.html [L]
</IfModule>
完美解决thinkphp6+VUE3路由冲突,而且不需要两个工程的任何代码,直接访问和跳转都没有问题
如果使用的nginx,转换一下伪静态格式就行了
本人按照网上说的其它方法都操作过,有的是要把vue3的index.html文件放到thinkphp的view层,有的是需要增加一个控制器或函数,还有的是增加thinkphp的路由,经测试后感觉一些小问题,或者是操作起来麻烦,最后找到这一种完美方案