2017-08-30 42 views
0

路由的用戶在一個頁面應用程序使用我快遞服務的靜態目錄的路徑/,其中包含一個單頁的前端有一個後端。這個後端也提供API REST。使用地址欄中

的前端是內置的反應,並使用反應路由器路由從該web應用程序的不同視圖的用戶。

如果我的反應路由器有兩個條目,讓說/app/config

我怎樣才能將客戶端重定向到應用程序的這一觀點,如果用戶在瀏覽器的地址欄直接進入的網址是什麼?

現在,如果我這樣做,快速獲取請求,顯然會返回一個404的消息,作爲單頁被送達/路徑。

回答

2

一個簡單的方法來解決是要始終(甚至404)在您的明確路線處理程序發送到用戶的index.html

參見:https://stackoverflow.com/a/25499007/2624575

但是,你需要採取一些後事:

1)你的陣營路由器代碼應該開始處理404:https://stackoverflow.com/a/37491381/2624575

2)您需要正確處理(圖標,css,js等)的路徑,否則你會發送相同的index.html到那些資源類型(這會使你的頁面渲染不正確)

3)Make s react-router正在使用browserHistory(不使用哈希的歷史#),這樣React將能夠正確呈現您的路線

希望它有幫助!

+0

所以,我只想澄清:我一定要擺脫快速靜態服務,並在前臺檢查請求的路徑? – lilezek

+0

@lilezek你仍然需要表達靜態服務(因爲你的所有資產都需要通過快遞服務)。您只需添加一條規則即可在404上始終提供「index.html」。你現在的問題是,express是將「/ app」和「/ config」視爲404s,但你需要'index.html'。你明白嗎? –

+0

是的,我明白了一部分,但不要反應路由器將路由用戶從給'index.html'後地址欄應用程序視圖?我還需要在前端做些什麼嗎? – lilezek