我将我的React网站build/文件夹部署到了一个AWS S3存储桶中。
build/
如果转到www.mywebsite.com,它会起作用,并且如果单击a标记转到“项目”和“关于”页面,它将带我到正确的页面。但是,如果我复制并发送页面url或直接转到以下链接:www.mywebsite.com/projects,它将返回404。
www.mywebsite.com
a
www.mywebsite.com/projects
这是我的App.js代码:
App.js
const App = () => ( <Router> <div> <NavBar/> <Switch> <Route exact path="/" component={Home}/> <Route exact path="/projects" component={Projects}/> <Route exact path="/about" component={About}/> <Route component={NoMatch}/> </Switch> </div> </Router> );
2020年5月1日更新:
由于这篇文章非常活跃,因此我需要更新答案:
因此,您可以选择一些方法来解决此问题:
react-router
你可以把一个指定的文件错误 的error.html 在 公共 您的应用程序做出反应的文件夹,并在 静态网站托管 : 错误的文件 中,放于: 的error.html 。这也有效。我已经测试过了
使用 AWS CloudFront > CloudFront分发 >存储桶的分发> 错误页面, 然后添加所需的错误代码。如果您不使用react-router(例如下面的示例),则存储桶将响应 Error 403, 因此您可以使用 error.html 进行响应。
TypeScript
6.*