8

У меня есть статический веб-сайт с одной страницей, который размещен в ковше AWS. Приложение - это JavaScript.Приложение для одиночной страницы в AWS CloudFront

У меня есть настройка Cloudfront для предоставления контента. Содержимое веб-сайта размещено в ведомости AWS S3, а Cloudfront используется для более быстрой доставки веб-контента для пользователей в разных местах.

Но после создания веб-сайта у меня возникла проблема. Если я обновляю страницу, это вызовет ошибку, поскольку ключ отсутствует. Я не могу обновить страницу или скопировать URL-адрес и вставить его на другую вкладку в браузере для доступа к той же странице.

Я получаю следующее сообщение об ошибке:

<Error> 
    <Code>NoSuchKey</Code> 
    <Message>The specified key does not exist.</Message> 
    <Key>__build__/home</Key> 
    <RequestId>36941111717B2006</RequestId> <HostId>wfLt17lDjXhZLqCxRM2zOiDIJSF03/HKdL3V9Oeq3r1glowmlZpavRj0zzBzBgXlXZudiXoc=</HostId> 
</Error> 

И мои правила S3 ведра Перенаправление следующим образом:

<RoutingRules> 
    <RoutingRule> 
     <Condition> 
      <KeyPrefixEquals>*/</KeyPrefixEquals> 
     </Condition> 
     <Redirect> 
      <ReplaceKeyWith>index.html</ReplaceKeyWith> 
     </Redirect> 
    </RoutingRule> 
</RoutingRules> 

ответ

8

Если ваш единственный сайт страница правильно обрабатывает 404-х вы можете просто изменить настройки по умолчанию CloudFront с настраиваемой страницей ошибок для вашего дистрибутива, который затем является вашим index.html.

Вы можете установить это на вкладке Error Pages для вашего дистрибутива, и это будет выглядеть примерно так:

enter image description here

+0

Спасибо за ответ, я имею еще одно сомнение Возьмем, к примеру, если URL это /blog или /about, и когда мы обновляем страницу, она сначала просматривает index.html, а затем загружает страницу/blog или/about. – Bidyut

+0

Да, это правильно, и как работает SPA: как правило. Какое поведение было бы оптимальным? –

+0

Пожалуйста, исправьте меня, если я ошибаюсь, можно ли загружать страницу напрямую, не загружая index.html? Чтобы мы могли быстро загружать запрошенную страницу. – Bidyut

Смежные вопросы