2012-12-20 42 views
1

我有啓用html5mode的angularjs應用程序。rails angularjs html5mode webrick或者nginx重寫規則配置如何?

我試圖在IE8中運行應用程序,它似乎是URL前綴#!假設是 - 後退按鈕工程等..哈希邦模式

我試圖在現代瀏覽器中運行應用程序,它似乎歷史API也工作。一切都好。

但是,如果我在兩個瀏覽器的地址欄中直接點擊http://localhost:3000/notes,我會從webrick/rails應用程序獲取路由錯誤。我認爲角將接管這個請求並處理它。

我有服務器端不安裝任何東西的角度指導說:

使用該模式需要URL重寫服務器端的,基本上你 不得不重寫所有的鏈接到應用程序的入口點 (例如index.html)

這就是爲什麼我從webrick得到路由錯誤?如果我能夠設置重寫規則該如何工作?我想如果我重寫像http://localhost:3000/notes -> http://localhost:3000(索引如果你希望)的「/筆記」 - 我想跳進去的地方已經消失了,棱角分明的應用永遠不會知道去哪裏尋找路線..

如果沒有辦法告訴webrick什麼和如何重寫。你的開發環境如何?

非常感謝。

回答

1

您需要將服務器配置爲返回與/notes相同的數據,就好像它是/路由一樣。不是重定向(因爲這將刪除notes)。基本上,你需要一個catchall路線,如果它不匹配其他東西,就會返回。要麼或者列舉已知路線(即,/,/notes,/other等),並使所有這些路線返回相同的文件。此時,角將檢測路徑並相應地採取行動。

+0

理解,謝謝你的回答。我想我需要重寫除靜態資產(圖像,腳本..)任何想法如何告訴webrick任何人的所有路線?我想堅持下去.. –

+0

okey,我用nginx來代替乘客。添加這個重寫規則'重寫^ /(?! assets)/ */last;'似乎完美。我不確定是否100%正確的正則表達式,但總比沒有好。 –

+0

更正:'重寫^ /(?! assets)/ last;' –