ReactJS应用显示部署后未找到路由

时间:2019-06-25 15:21:09

标签: reactjs apache amazon-s3 reverse-proxy web-deployment

我的任务是在AWS S3存储桶上部署ReactJS应用程序。这个ReactJS应用程序将调用由Apache反向代理SSL终结器堆栈所前端的API端点。我已将部署配置为现在可以在其中显示带有应用程序徽标的空白/白色布局页面,然后在Regex regex = new Regex(" (¤^ ¤+) "); string cleanString = regex.Replace(testString, "[$1]"); Console.WriteLine(cleanString); 上显示组件或内容的位置。

S3存储桶当前被设置为私有,并通过VPC端点在其和Apache Web服务器之间私有路由流量。通过为UI和API端点使用相同的原始域,我避免了CORS问题。

当我使用S3的静态网站配置URL时,将ACL从Route not found更改为Private,并删除VPC端点,ReactJS解决方案成功加载了默认组件。

到目前为止,我已经能够部署一个使用Javascript库的静态网站,并成功在Apache反向代理SSL终止符堆栈之后调用API。

这是我下面的App.js代码:

PublicRead

这是我下面的Apache配置:

import React from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import Layout from './components/core/Layout';
import BS from './assets/global-styles/bootstrap.min.module.css';
import './index.module.css';
import Homepage from './pages/Homepage';
import GraphView from './pages/GraphView';
function App() {
  return (
    <Layout>
      <Router>
        <Switch>
          <Route exact path="/" component={Homepage} />
          <Route exact path="/views/:id" component={GraphView} />
          <Route path="*" render={() => <span>Route not found</span>} />
        </Switch>
      </Router>
    </Layout>
  );
}

export default App;

我需要ReactJS应用程序成功部署并运行。我决定为每个静态资产文件夹创建一个Apache映射,因为仅使用一个与Location或LocationMatch指令Regex匹配器匹配的映射会与应用程序的根目录匹配,而所有其他资产位置似乎都不起作用。请问我在做什么错?这花了我几天的时间。

0 个答案:

没有答案