vue 构建的前台项目,打包放入Spring Boot后台。但是无法直接访问页面,只能通过首页菜单点击进入跳转。(未打包之前,前台可以通过url地址直接访问页面,打包直接就出现了上述情况)
请问有大佬知道是怎么回事嘛?
直接访问:
通过首页菜单访问可以跳转到页面:
前台路由设置:
const routes = [
{
path: '/',
component: () => import('@/views/Main.vue'),
name: '',
children: [{
path: '',
component: () => import('@/views/dashboard/Dashboard.vue'),
meta: [],
}]
},{
path: '/404',
component: () => import('@/views/error/404.vue'),
name:'404'
}, {
path: '/reportUpload',
component: () => import('@/views/report/ReportUpload.vue'),
meta: ['报表管理', '报表上传配置']
}, {
path: '/reportDownload',
component: () => import('@/views/report/ReportDownload.vue'),
meta: ['报表管理', '报表下载']
}, {
path: '/dataSource',
component: () => import('@/views/datasource/DataSource.vue'),
meta: ['报表管理', '数据源管理']
}, {
path: '/ReprotData',
component: () => import('@/views/report/ReprotData.vue'),
meta: ['报表管理', '报表数据生成']
}, {
path: '/dictManager',
component: () => import('@/views/report/dict-manage/DictManager.vue'),
meta: ['字典管理', '字典配置']
}, {
path: '/reportManage',
component: () => import('@/views/report/ReportManager.vue'),
meta: ['报表管理', '报表管理']
}, {
path: '/reportStep',
component: () => import('@/views/report/ReportStep.vue'),
meta: ['报表管理', '报表进度']
}, {
path: '/dictSQLManager',
component: () => import('@/views/report/dict-manage/DictSQLManager.vue'),
meta: ['字典管理', '字典SQL配置']
}
]
因为,你直接访问 /datasource 是向服务器发送了一个请求,但是服务器并没有这个文件或处理这个路径的控制器,所以返回404了
为什么 访问/ 可以,因为根目录下有个index.html 就是vue的入口,所以正常返回了页面
你可能又要问,为什么我可以通过 “首页菜单访问”,明明是正常的
这是因为,vue的route 操纵了地址栏里的url,是能过javascript改变了地址栏而已,并没有向服务器发送请求,
哪怎么样可能 /datasource 直接可以访问呢?
解决方案就是 把这个应用程序的所有请求 转发到index.html上
下面的文章,我说的更详细一点,并给出了一个 apache的配置方法,你可以参考
https://www.zhihu.com/questio...