12

當我刷新我的網站時,我得到了404。這是與Angular2,打字稿和firebase。當我刷新我的網站時,我得到了404。這是與Angular2和firebase

我已經部署到firebaseapp與我的Angular2應用程序。

路線似乎改變很好,但是當我刷新瀏覽器時,它將我重定向到404頁面。

當我刷新本地這不會發生。

我是否缺少任何路線設置或Firebase設置?

這是我firebase.json文件:

{ 
    "firebase": "test", 
    "public": "src", 
    "ignore": [ 
    "firebase.json", 
    "**/.*", 
    "**/node_modules/**" 
    ] 
} 
+0

讓我知道是否有人需要看到angular2路線 – AngularM

+0

我得到404重定向到firebase 404頁 – AngularM

+1

當我通過瀏覽器刷新時發生[Angular 2:404錯誤]的可能重複(http://stackoverflow.com/questions/35284988/angular-2-404-error-occurrence-when-i-refresh-through-browser) –

回答

14

對於火力地堡主機上的重定向文件和重寫是在這裏:https://www.firebase.com/docs/hosting/guide/url-redirects-rewrites.html

從那裏:

當你想要顯示的使用重寫相同的內容多個網址。重寫對於模式匹配非常有用,因爲您可以接受任何與模式匹配的URL,並讓客戶端代碼決定要顯示的內容。

你很可能會尋找一個頁面上的第重寫示例:

rewrites": [ { 
    "source": "**", 
    "destination": "/index.html" 
} ] 

這是web服務器以服務/index.html任何傳入的請求,無論路徑是什麼樣的指令。

+0

謝謝你運作良好 – AngularM

+0

@AngularM或任何懂得如何解決問題的人,他們會提供一個從URL中刪除'#'程序的工作示例嗎? –

+0

英鎊符號(hashtag)可以使用$ locationProvider移除,如此處所示https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag – Felipe

16

我認爲你使用Angular2路由的默認模式(即HTML5LocationStrategy)。在這種情況下,您需要在Web服務器上進行一些配置,以便爲每個路由對應的每個URL加載index.html(您的入口點文件)。

如果你想切換到HashBang方法,您需要使用此配置:

import {bootstrap} from 'angular2/platform/browser'; 
import {provide} from 'angular2/core'; 
import {ROUTER_PROVIDERS} from 'angular2/router'; 
import {LocationStrategy, Location, HashLocationStrategy } from 'angular2/router'; 

import {MyApp} from './myapp'; 

bootstrap(MyApp, [ 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, {useClass: HashLocationStrategy} 
]); 

在這種情況下,當你刷新頁面,它會再次出現。

希望它可以幫助你, 蒂埃裏

+0

我不想哈希方法 – AngularM

+1

所以你需要配置你的服務器端爲你定義的每條路由提供'index.html'文件... –

+0

我是如何做到這一點的firebase託管?並以angular2? – AngularM

相關問題