react router doesn't work in aws s3 bucket

前端 未结 12 1496
深忆病人
深忆病人 2020-11-28 08:08

I deployed my React website build/ folder into an AWS S3 bucket.

If I go to www.mywebsite.com, it works and if I click on a ta

12条回答
  •  清酒与你
    2020-11-28 08:28

    Update 1 May 2020:

    Since this post is quite active, I need to update the answer:

    So you have a few options to solve the issue:

    1. You can put index.html in the Error document box (like Alan Friedman suggested).
      • Go to your bucket (the one that actually has the code - not the one you use to redirect) -> Properties -> Static website hosting:
      • This is not "hacky" but it works because of the way react-router works: It handles the requests from the front-end and routes users to other routes but overall, the React app is a single-page application.
      • If you want server-side React, consider using Next.js.

    1. You can put a designated error file error.html in the public folder of your React app and in the Static website hosting: Error document box, put in: error.html. This also works. I've tested it.

    2. Use AWS CloudFront > CloudFront Distributions > The distribution of your bucket > Error Pages and add the error code you want. If you don't use react-router (like the example below), the bucket will respond with Error 403 so you can respond with your error.html.

    1. For TypeScript, currently react-router doesn't support it so you should consider option 2 and 3. They're going to update the library in future version 6.* according to this thread.

提交回复
热议问题