Использование пользовательских страниц ошибок
Если вы настроите корзину S3 вашего SPA как S3 origin
, CloudFront будет использовать конечную точку REST API вашей корзины, что приведет к 403 ошибкам вместоОшибки 404.
Затем вы можете настроить страницу ошибки 403 в CloudFront.
Использование Lambda @ Edge
Вы можете переписать URL-адрес на /index.html
с функцией Origin Request Lambda @ Edge в поведении, которое перенаправляет запросы в SPA:
const path = require('path');
exports.handler = (event, context, callback) => {
const { request } = event.Records[0].cf;
// Rewrite uri without extensions only
// Will rewrite /blabla to /index.html but not /abc.txt or /xyz.css
if (!path.extname(request.uri)) request.uri = '/index.html';
callback(null, request);
};
Преимущество этого решения состоит в том, что он не изменяет код состояния HTTP (он остается200).