VUE3路由访问的一个问题?

作者站长头像
站长
· 阅读数 6

一个项目,放在服务器的二级目录workerlog下路由设置如下:

const router = createRouter({
          history: createWebHistory('/workerlog/'),
          routes //上面的路由数组
})

vite.config.js

// 静态资源基础路径 base: './' || '',
    base: process.env.NODE_ENV === 'production' ? '/workerlog/' : '/',

又在该二级目录下新建文件.htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /workerlog/index.html [L]
</IfModule>

目前项目可以正常访问,但是如果分享给朋友网址:https://www.xxx.cn/workerlog是可以访问的;但是如果分享的是项目中某一页https://www.xxx.cn/workerlog/user,就报错了找不到该页。请问这个问题需要在哪找原因?

回复
1个回答
avatar
test
2024-07-06

base: process.env.NODE_ENV === 'production' ? '/workerlog/' : '/',这一条,你需要确定你在部署阶段有 process.env.NODE_ENV并等于production

不然的话,你就直接指定 base:'/workerlog/' 吧,开发阶段也没有多大影响

Apache如以下配置

RewriteCond %{REQUEST_URI} ^/(workerlog|workerlog/.*)$
  RewriteRule ^/workerlog/index\.html$ - [L,NC]
  
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(workerlog|workerlog/.*)$ workerlog/index.html [L]

试试这样

具体看https://www.zhihu.com/question/46630687/answer/157166318 最后一段

几年前写的了,有的东西和现在不一样了,但是Apache配置没有变。我现在的项目也用VUE3,还是可以用的

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容