2017-08-23 40 views
1

在我的Angular 4應用程序中,如果我在第一次訪問該網站時輸入非根路徑(即localhost:4200/projects),我的應用程序將自舉並在瀏覽器中將正確的組件呈現給屏幕。角度第一次訪問非根路徑在本地工作,但沒有在生產

但是,一旦我通過IIS提供服務,如果我去http://<my-domain>.com/projects,我得到一個404錯誤(不是來自我的應用程序),並且應用程序永遠不會被引導。

如何訪問非根路徑作爲首次訪問生產站點時認識到應用程序是Angular應用程序並引導應用程序是否爲根或超出的任何路徑?

回答

2

my answer here爲什麼發生這種情況的更詳細的解釋。 其中一小段:

在您的應用程序的部署版本,收留了它的Web服務器知道 如何只服務於一個HTML文件,它看到(的index.html),其 對應於你的根路徑。你想直接 http://url-to-your-app/art例如訪問第二個,服務器將拋出一個404 沒有發現,因爲它不承認,作爲一個資源它 可以投放的路徑。

對於IIS,解決這個問題最簡單的方法就是把它添加到你的web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors> 
      <remove statusCode="404" subStatusCode="-1" />     
      <error statusCode="404" path="/index.html" responseMode="ExecuteURL" />     
     </httpErrors> 
    </system.webServer> 
</configuration> 

這樣做是什麼指示IIS與您的index.html迴應只要檢測到404 。

另一種方法是設置URL重寫,但需要安裝和配置重寫模塊,並與上述的解決,它只是太麻煩的在我看來。

+0

謝謝@Andrei –

相關問題