我正在尝试发布我的SPA应用程序,它在本地运行良好,但当我将其推送到Github页面时,如果您直接导航到内部页面,则它们不会注册。
例如,http://USER.github.io/PROJECT_NAME/可以工作,但http://USER.github.io/PROJECT_NAME/about不能,因为没有重定向或重写。index.html位于项目的根目录下。
发布于 2016-03-30 14:46:50
Github pages允许您创建一个404.html页面,该页面将在每次...出现404错误。如果http://USER.github.io/PROJECT_NAME/about不存在,它会将您的404.html内容与“未找到”url显示为window.location。
因此,此页面可以包含重定向到hashbang样式路由脚本。例如: react路由器,即使使用干净的urls (browserHistory)也可以理解像PROJECT_NAME/#/about这样的路由,并自动推送到PROJECT_NAME/about。
太难看了!
发布于 2016-08-23 01:19:38
我刚刚构建了这个小包(为bower / npm)来解决这个问题,所以我想我应该在这里分享它来回答你的问题。
https://github.com/websemantics/gh-pages-spa
如果您在404.html和index.html页面中包含该程序包,它会将所有流量重定向到Index.html。
它支持项目和用户/组织页面类型的存储库,处理QueryStrings,并提供了一个工作示例。
发布于 2020-01-10 16:10:13
如果您正在创建react应用程序,并且您想在gh页面中使用浏览器路由器,那么解决方案是在您的根目录中创建404.html文件,并在构建您的react-app之后将index.html中的所有内容复制到404.html。
当用户尝试访问您的页面时,例如https://successtar.github.io/teamwork/ GitHub将为您的index.html页面提供服务,而如果用户尝试访问https://successtar.github.io/teamwork/foo,由于它不存在,GitHub将提供与index.html内容相同的404.html页面,这样您就可以让您的react应用程序按预期工作。
以下是示例https://github.com/successtar/teamwork/tree/gh-pages的源代码
更新
您可以在每次运行npm run build时自动执行该过程,以自动生成404.html文件。
第一步:为跨平台命令安装shx,如下所示的npm install shx --save-dev
第二步:转到脚本块中的package.json,将"build": "react-scripts build"替换为"build": "react-scripts build && shx cp build/index.html build/404.html"
这就是全部。
无论何时运行npm run build,都会自动生成404.html文件。
https://stackoverflow.com/questions/36296012
复制相似问题