8

Ich habe eine statische Website mit einer einzelnen Seite, die in AWS-Bucket gehostet wird. Die Anwendung ist JavaScript.Einzelseitenanwendung in AWS CloudFront

Ich habe Cloudfront für die Bereitstellung des Inhalts eingerichtet. Der Inhalt der Website wird in einem AWS S3-Bucket gehostet, und Cloudfront wird verwendet, um eine schnellere Bereitstellung von Webinhalten für Benutzer an verschiedenen Standorten zu ermöglichen.

Aber nach der Einrichtung der Website habe ich ein Problem. Wenn ich die Seite aktualisiere, wird der Fehler ausgelöst, da der Schlüssel nicht vorhanden ist. Ich kann die Seite nicht aktualisieren oder die URL kopieren und sie auf einer anderen Registerkarte im Browser einfügen, um auf die gleiche Seite zuzugreifen.

Ich erhalte die folgende Fehlermeldung:

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

Und meine S3 Eimer Umleitungsregeln sind wie folgt:

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

Antwort

8

Wenn einzelne Seite Website richtig behandelt 404 die Sie einfach die Standardcloudfront außer Kraft setzen können Einstellungen mit einer benutzerdefinierten Fehlerseite für Ihre Distribution, die dann Ihre index.html ist.

Sie können diese Einstellung in den Error Pages Registerkarte für Ihre Verteilung und es würde wie folgt aussehen:

enter image description here

+0

Danke für die Antwort, ich bin noch einen Zweifel zum Beispiel Nehmen Sie mit, wenn die URL ist /blog oder /über und wenn wir die Seite aktualisieren, wird es zuerst durch index.html gehen und dann wird es die/blog oder/about-Seite laden. – Bidyut

+0

Ja das ist richtig, und wie SPA: s normalerweise funktionieren. Welches Verhalten wäre optimal? –

+0

Bitte korrigieren Sie mich, wenn ich falsch liege, ist es möglich, die Seite direkt zu laden, ohne die index.html zu laden? Damit können wir die gewünschte Seite schnell laden lassen. – Bidyut