前后端分离 Vue打包的history路由风格index.html与后端的ThinkPHP的index.php都部署在后端框架的public目录下如何转发?

ThinkPHP5.1+Vue history模式路由问题:

Vue使用history路由模式,打包以后,将dist目录中的文件放置到public目录中后产生下面问题:

后端要求定位到index.php

www.test.com/index/index/index   
对于后端,相当于访问www.test.com/index.php/index/index/index
入口文件是index.php

前端要求定位到index.html

history 风格的vue路由刷新 www.test.com/index/index/index  
对于前端hash风格路由,相当于www.test.com/#/index/index/index 
打包部署后,入口文件是是index.html

问题前提条件: 后端服务器转发设置,找不到文件或目录,就转发到index.php

问题的具体体现:F5刷新www.test.com/index/index/index 报404 not found 错误(原因ThinkPHP下确实无该方法)

解决方式1:使用apache 的ErrorDocument 404 “index.html” 设置,想要实现404就转发到index.html 实现失败
解决方式2:Thinkphp5.1在app.php配置文件中添加以下配置:(实现不理想)
    'http_exception_template'    =>
        [
            404 =>  Env::get('app_path') . '../public/index.html',
        ],

刷新后,F5刷新正常显示,但是缺点1:还是显示404码,不是想要的200码
缺点2:先请求后端,失败,才能转发前端。不符合理想实现。

理想实现:对于F5刷新,先直接找前端index.html,没找到,然后再找后端index.php,应该是通过Appache转发实现。

目前想到的较好方案:若前端添加 base: ‘/static’,相当于加长了路由,再在转发的时候,以/static为条件设置这种情况转发到index.html,否者转发到index.php,不理想之处:加长了路由

求教一个更优秀的,使用一个端口的解决方式。

后续和别人请教,说用两个端口解决,前端用一个端口,转发到index.html 后端用一个端口,转发到index.php

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值