2017-09-02 111 views
1

我在Angular 4中創建了一個新組件,並添加了它的路徑'account'。 當我運行ng serve主頁打開,並有一個帳戶頁面的鏈接。 點擊帳戶頁面鏈接帳戶頁面打開。如果我刷新頁面,它會起作用。404在路線角度刷新4,nginx服務器和apache

問題是,當我使用ng build進行構建並將構建上傳到apache。如果我點擊「帳戶」鏈接,帳戶頁面打開。 但是,如果我刷新或嘗試直接打開帳戶路線,我得到404錯誤。

如果我添加'使用散列',那麼它與'#'一起工作,但我不想這樣做。

我使用的角度4.2.4

+0

所有你需要做的是改變你的apache .htaccess文件,使所有的請求服務index.html的外商投資企業。進一步的路由由加載的角色腳本完成。 –

回答

3

這是您刷新了您的應用程序時,因爲瀏覽器內的實際地址更新有一個404錯誤的正常行爲(和不#/ hashbang方法)。默認情況下,HTML5歷史記錄用於在Angular2中重用。

如果您不希望發生404錯誤,則需要將服務器更新爲 ,爲您定義的每個路徑路徑提供index.html文件。

您可以檢查此Link如何在Apache上部署Angular應用程序。

如何在Apache處理的index.html

This can be achieved by adding a .htaccess file (in the same directory where the index.html resides) with the following contents. 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.html [L] 
</IfModule> 
+0

不,沒有工作。我已經嘗試過,現在在WAMP服務器上 – Sandhu

+0

@桑德胡你檢查鏈接有一個詳細的視圖,我剛剛發佈的一部分,它應該工作,如果你只是檢查這也https://stackoverflow.com/a/41349403/ 2708210 –