Angular S3静态网站-403禁止路由错误

时间:2019-08-24 23:31:00

标签: angular amazon-web-services amazon-s3 routing amazon-cloudfront

我知道堆栈溢出还有其他与此类似的问题,但是我还无法解决问题。我有一个使用静态网站托管在S3中托管的Angular 7应用。我尚未购买域或设置CloudFront,因为我仍在开发该站点。

我的问题是,当导航栏由导航栏中的click事件触发时,路由工作正常(代码使用router-link),但是如果我在除根目录(“ /”)之外的任何页面上都单击了刷新,从S3收到403禁止错误:

enter image description here

正如我所说,角度路由似乎工作正常,因为我在代码中使用router-link来处理导航,这是一个示例:

<a routerLink="/services">Click here</a>

这是我的app-routing.module.ts代码:

const routes: Routes = [
  { path: '', component: HomeComponent }, 
  { path: 'about-us', component: AboutUsComponent }, 
  { path: 'new-patients', component: NewPatientsComponent }, 
  { path: 'services', component: ServicesProvidedComponent }, 
  { path: 'contact', component: ContactComponent }, 
  { path: '**', component: HomeComponent }];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

根据我已阅读的其他解决方案,我在想,我需要以某种方式重定向到索引页面,以便Angular路由器能够启动,但我不确定我需要添加什么配置。我以为添加默认路由('**')可以解决此问题,但显然我错了。

当我向S3进行部署时,我总是选择使所有文件可公开访问的选项,所以我认为这不是问题所在。

2 个答案:

答案 0 :(得分:2)

选择存储分区,转到对象标签,选择所有文件,点击操作,向下滚动并点击公开

答案 1 :(得分:0)

当然,当我发布问题时,我已经找到答案了。我认为这是其他人对类似问题的答案,但我不会删除它,而是发布了为解决该问题所做的工作,以防它对其他人有帮助。

enter image description here

我认为此配置位于CloudFront中,但事实证明它恰好在S3存储桶配置中。对我而言,以前没有Error文档的值,并将其设置为index.html可以解决我的问题。