我开发了一个angular2网站,我在其中实现了angular2路由,并在生产环境中构建了此网站之后,现在当我从其基本URL开放此网站时,http://urlblocker.net/spotify它工作正常。但是当我导航到任何其他页面并刷新该页面时,例如http://urlblocker.net/spotify/about,它会出现以下错误。
“未找到, 在此服务器上找不到请求的URL / spotify / artist / 0C8ZW7ezQVs4URX5aX7Kqx。 此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。“
如果我只是打开页面URL,它也会产生同样的错误。 如何解决?
答案 0 :(得分:5)
Angular2 SPA预计该应用会有1个单一入口点。在不使用散列位置策略的情况下,任何不是入口点的“页面”的刷新都将导致404(该页面在服务器上不存在)。
解决此问题的一种方法是将HashLocationStrategy用作app.module中的提供程序
providers: [
{provide: LocationStrategy, useClass: HashLocationStrategy},
...
]
还要确保索引文件中包含基本href,并且app.module中的import语句需要包含
import {HashLocationStrategy, LocationStrategy} from "@angular/common";