Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 加载网站的目录级页面时出现问题_Reactjs_Deployment_Github Pages - Fatal编程技术网

Reactjs 加载网站的目录级页面时出现问题

Reactjs 加载网站的目录级页面时出现问题,reactjs,deployment,github-pages,Reactjs,Deployment,Github Pages,我刚刚通过github页面部署了我的CreateReact应用程序。当点击到根域或在浏览器的URL地址栏中输入根域时,站点()可以正常加载。然而,如果深度链接到目录级页面(jasonclerk.com/about)或在URL地址栏中输入该目录级页面,我将遇到404错误。如果我在站点内使用导航,我可以毫无问题地转到其他页面 我确实在我的顶级组件中使用了路由(react router dom),所有这些在本地测试环境中都运行良好。此外,之前通过heroku部署了该站点,与deeplinks没有任何问

我刚刚通过github页面部署了我的CreateReact应用程序。当点击到根域或在浏览器的URL地址栏中输入根域时,站点()可以正常加载。然而,如果深度链接到目录级页面(jasonclerk.com/about)或在URL地址栏中输入该目录级页面,我将遇到404错误。如果我在站点内使用导航,我可以毫无问题地转到其他页面

我确实在我的顶级组件中使用了路由(react router dom),所有这些在本地测试环境中都运行良好。此外,之前通过heroku部署了该站点,与deeplinks没有任何问题。现在部署在ghpages上,这样我就可以添加自定义域了


有什么建议可以解决直接加载目录级页面的问题吗?

react router是客户端路由的一个很好的例子。您面临这个问题是因为GitHub页面服务器不知道您正在构建客户端路由应用程序。从服务器的角度来看,它无法识别
/about
。有两种方法可以解决您的问题

  • 使用
    HashRouter
    而不是
    BrowserRouter
    ,URL最终会变得不那么漂亮,但由于它使用哈希,因此您不必在服务器端执行任何特殊操作

  • 按照这里的说明为Github页面实现一个“黑客”解决方案。基本上,您可以在
    404.html
    中添加一个脚本(即当收到404错误时,GitHub页面将显示),这将把所有请求重定向到
    index.html


  • 谢谢Matthew HashRouter工作出色!