【发布时间】:2021-04-06 15:38:42
【问题描述】:
我的域名:myname.com
我的 GitHub 仓库:myname
我的 GitHub 名称:myname
底层 GH-Pages 网址:myname.github.io/myname
我的问题:我使用 History Vue Router 设置了以下页面:主页、联系人、项目。
每当我转到myname.com/contact 时,它都会将我路由到 404。当我单击链接将我重定向到/contacts 时,它会将其推送到地址栏,但如果您刷新,它会路由到 404。我读过以下帖子:Deploy Vue to GitHub Pages. Error with vue-router 和 Vue router on page refresh gets 404,但问题仍然存在并且自定义域增加了复杂性。我也读过这个:Vue Router return 404 when revisit to the url 但是,有一个 React Router 页面的示例,其中一个浏览器路由器在 GH-Pages 上工作:https://milosrancic.github.io/reactjs-website/activities,repo:https://github.com/milosrancic/reactjs-website。
这是我所做的:
- 我的
package.json有以下行:"homepage": "https://myname.com/" - 我的
vue.config.js就是这样的:
module.exports = {
publicPath: '/'
}
- 我的路由器在我的路径上:
/src/router/index.js,传入main.jsnew Vue(),并像这样导出:
export default new VueRouter({
base: process.env.BASE_URL,
mode: 'history',
routes
})
- 在我的
App.vue(入口组件)中,模板如下所示:
<template>
<div id="app">
<nav-bar></nav-bar>
<router-view></router-view>
</div>
</template>
【问题讨论】:
-
GitHub 不会将这些请求重定向到您的应用。 router.vuejs.org/guide/essentials/history-mode.html 进行解释。快速解决方法是删除
mode: 'history' -
您链接的“反应”答案也适用于您的应用。您的 SPA 使用什么技术框架并不重要。当请求特定路由(或全部)时,您仍然需要告诉路由器重定向到您的应用程序的入口点。如果路由器没有将请求指向应用程序,应用程序将忽略该请求,并且路由器会以
404进行响应。我不确定 github 是否在他们的免费包中提供了包罗万象/重定向的能力。另一种方法是放弃mode: 'history',因为这样您的所有应用链接都将指向入口网址(使用不同的#)。 -
所以没有办法将历史/浏览器路由器与 GH-Pages 一起使用?我不希望在 URL 前面有散列。我认为我不能将 .htaccess 文件提供给我的存储库以使其应用于我的页面。也许我需要为此离开 GH-Pages? @tao
-
肯定有。但我不知道 GitHub 是否免费提供。这里的重点是:您的问题与 Vue 无关,与 GitHub 路由设置有关。含义:如果您在 GitHub 上寻找任何 React、Angular、Vue、Svelte 或任何其他 SPA 替代品,您可能会找到答案。但这是关于如何设置 GitHub,而不是应用程序。
-
好的,所以this guy 提出了一个非常酷的解决方案。 GH 允许您使用自己的 404 模板。他没有放置那个模板,而是放置了一个页面,该页面使用正确的 URL 重定向到入口点。不过,我还不确定他是如何在浏览器地址中屏蔽它的。虽然开箱即用,但我认为该解决方案会对 SEO 产生负面影响。
标签: javascript vue.js vue-router github-pages