我正在拥有一个托管在AWS桶中的单页静态网站。 该应用程序是JavaScript。
我已设置Cloudfront以提供内容。 该网站的内容托管在AWS S3存储桶中,Cloudfront用于为不同位置的用户提供更快的Web内容传输。
但在建立网站后,我遇到了一个问题。如果我刷新页面,它会抛出错误,因为密钥不存在。 我无法刷新页面或复制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>
答案 0 :(得分:11)
如果您的单页网站正确处理404,您只需使用自定义错误页面覆盖默认的CloudFront设置,然后就是您的Error Pages
。
您可以在发布的 #region MyProfileTracker classe
public class MyProfileTracker : ProfileTracker
{
public event EventHandler<OnProfileChangedEventArgs> mOnProfileChanged;
protected override void OnCurrentProfileChanged(Profile oldProfile, Profile newProfile)
{
if (mOnProfileChanged != null)
{
mOnProfileChanged.Invoke(this, new OnProfileChangedEventArgs(newProfile));
}
}
}
#endregion
#region OnProfileChangedEventArgs classe
public class OnProfileChangedEventArgs : EventArgs
{
public Profile mProfile;
public OnProfileChangedEventArgs(Profile profile)
{
mProfile = profile;
}
}
#endregion
标签中进行设置,它看起来像这样: