getting 404 for links with create-react-app deployed to github pages

前端 未结 2 663
旧巷少年郎
旧巷少年郎 2020-12-03 02:08

I\'m trying to deploy a create-react-app to a relative path on GitHub pages with a custom domain. E.g. www.example.com/myproject

I\'m using react-

相关标签:
2条回答
  • 2020-12-03 02:19

    Problem: URL gets evaluated on server side

    When you enter a new URL into address bar of the browser or refreshes the page, browser requests server (in this case GitHub pages server) for that URL. At this point, client side router (react-router) can't take action as it is not yet loaded for that page. Now server looks for a route that matches /accounts won't find it (because routing is done on client side) and returns 404.

    Solution

    If you had control over the server, you can serve index.html for all routes. This is explained in create react app documentation serving apps with client side routing. As we don't have that control in case of GitHub pages, We can try these.

    Easy Solution

    Switch from browserHistory to hashHistory With this change, your URLs will go from looking like

    www.example.com/myproject/account

    to

    www.example.com/myproject/#/account

    So it's a bit messy.

    Harder solution

    Get GitHub pages to redirect to index.html on all requests. Basically you have to add a 404.html in your build directory with code to redirect to index.html. More on how to do that.

    Create React App has documentation around client-side routing in GitHub pages too

    0 讨论(0)
  • 2020-12-03 02:21

    The reason is because the browser may not have cached the routing code yet so it causes a 404 error if you go to a route other than the index.

    Side note if anyone is using ZEIT Now to deploy (although gh-pages would be similar); I managed (after a deal of time) to work out how to fix it. It was a bit of an effort so I decided to make an article on it for anyone else who gets stuck.

    https://itnext.io/fix-404-error-on-single-page-app-with-zeit-now-b35b8c9eb8fb

    0 讨论(0)
提交回复
热议问题