重写和重定向配置以在AWS Amplify上使用react-strapi部署React应用程序?

时间:2020-07-25 17:07:41

标签: reactjs url-rewriting react-router aws-amplify react-snap

我有一个带有react-snap的react应用程序,可以在ec2实例上正常工作。

实例上的nginx配置看起来像

server {
        root /var/www/xxx.yyy.com;
        index index.html index.htm index.nginx-debian.html;

        server_name xxx.yyy.com www.xxx.yyy.com;

        location / {
                try_files $uri $uri/ /200.html$is_args$args;
        }
}

我最近将所有内容都移植到了aws放大器上。对SPA使用默认的重写规则,所有页面都可以正常加载,但是社交爬网程序无法对页面进行爬网以获得元信息。

AWS放大SPA的默认重定向和重写规则

[
    {
        "source": "</^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>",
        "target": "/200.html",
        "status": "200",
        "condition": null
    }
]

我还注意到在ec2实例上,所有URL都有一个试验斜杠,而awsmplify缺少它吗?

我尝试了几种不同的配置,并且如果我在源代码中添加了一个

/</^[^.]+$|\\\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>

社交爬虫正常工作,并且页面上还出现了缺少的尾部斜杠,但某些页面(例如404)在导航栏上没有路线链接:

Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>XXXXXXX</RequestId>
<HostId>XXXXXXXXXXXXXX</HostId>
</Error>

有人能与AWS Amplify合作吗?我不熟悉重写规则,因此不胜感激。

这是我的构建文件在放大时的外观:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - '# This installs Chrome on any RHEL/CentOS/Amazon Linux variant.'
        - curl https://intoli.com/install-google-chrome.sh | bash
        - npm ci
    build:
      commands:
        - npm run build
    postbuild:
      commands:
        - react-snap
  artifacts:
    baseDirectory: build
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
      - /opt/google/**/*

在Package.json中,我有


"reactSnap": {
    "puppeteerArgs": [
      "--no-sandbox",
      "--disable-setuid-sandbox"
    ],
    "puppeteerExecutablePath": "/opt/google/chrome/google-chrome"
  },
"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "postbuild": "react-snap"
  },

0 个答案:

没有答案