2017-02-22 45 views
1

我開發了一個angular2網站,其中我實現了angular2路由並在生產環境中構建它之後部署了此網站,現在當我從其基本URL打開該網站時,即http://urlblocker.net/spotify它可以工作精細。但是當我導航到任何其他頁面並刷新頁面時(例如http://urlblocker.net/spotify/about),它會產生以下錯誤。Angular2網站中刷新除基本URL以外的任何頁面

「未找到, 請求的URL/Spotify的/藝術家/ 0C8ZW7ezQVs4URX5aX7Kqx在此服務器上找到。 此外,試圖使用ErrorDocument來處理請求時遇到一個404 Not Found錯誤。」

如果我只是打開頁面URL,它也會導致同樣的錯誤。 如何解決?

+0

聽起來http://stackoverflow.com/questions/31415052/angular-2-0-router-not-working-on-reloading-the-browser/36310728#36310728 –

回答

4

Angular2 SPA期望爲應用程序提供1個單一入口點。如果不使用哈希位置策略,任何不是入口點的「頁面」刷新都將導致404(頁面在服務器上不存在)。要解決這個

一種方式是通過使用HashLocationStrategy作爲app.module內的供應商

providers: [ 
    {provide: LocationStrategy, useClass: HashLocationStrategy}, 
    ... 
] 

另外,還要確保你在你的索引文件和/ app.module內的import語句有一個基本href需要包括

import {HashLocationStrategy, LocationStrategy} from "@angular/common"; 
+0

感謝兄弟@傑夫正義,它解決了我的問題。 –

+0

它的工作,謝謝。但是如果沒有'#'怎麼辦? –