尝试在amozon虚拟主机上部署角度2应用程序。
索引页面运行良好,但当我尝试访问/users
等其他页面时,我收到了404 not found
错误。
我尝试关注此帖Configure Amazon S3 static site with Angular JS ui.router html5Mode(true) on page refresh但未成功。
这是我的应用http://ugram-team-7.s3-website-us-east-1.amazonaws.com/
感谢您的回答。
答案 0 :(得分:5)
将您的应用路由配置为使用哈希#
const routes: Routes = [
// routes here
];
@NgModule({
imports: [
... other imports
RouterModule.forRoot(routes, { useHash: true }) // .../#/users/
],
...
})
export class SomeModule { }
或配置S3
在您的域的S3控制台的编辑重定向规则部分中,添加以下规则:
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>domain.com</HostName>
<ReplaceKeyPrefixWith>#/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
将其放在index.html
中<script language="javascript">
if (typeof(window.history.pushState) == 'function') {
window.history.pushState(null, "Site Name", window.location.hash.substring(2));
} else {
window.location.hash = window.location.hash.substring(2);
}
</script>
答案 1 :(得分:1)
您可以解决问题并仍然使用网址重写。
首先,您不应直接从S3分发您的网站,而是在其前面放置CloudFront分配。
使用以下内容在CloudFront分配上创建自定义错误页面规则:
请同时take a look at my guide获取详细说明。