2016-06-25 31 views

回答

3

你應該有一個nginx.conf像這樣(我已經採取了這一從我的舊角項目之一):

server { 
    ## Your website name goes here. 
    server_name example.com; 

    ## Your only path reference. 
    root /var/www/example.com/public_html; 

    ## This should be in your http block and if it is, it's not needed here. 
    index index.html; 

    autoindex off; 

    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location/{ 
     if (!-e $request_filename){ 
      rewrite ^(.*)$ /index.html break; 
     } 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
     expires max; 
     log_not_found off; 
    } 
} 

第一和第二location規則是不需要任何共同文件特別檢查並經常請求機器人和瀏覽器。

第三條規則說如果請求的文件(相對url)不存在,index.html將被提供。這個文件是你的SPA的主要文件。如果此規則與請求匹配,則關鍵字break將停止進程。

最後一個規則說,如果被請求的文件,JS,CSS,PNG,...(你的靜態資產)結束,這將是服務器,沒有任何重寫。 通過這種方式,您可以在任何目錄中擁有您的資產而不會產生麻煩。

P.s.

我用這也用於$locationProvider.html5Mode(true);在我的角應用程序有真實的網址,其作品很好。

+0

謝謝您的詳細解答。這適用於像/ foo和/ user這樣的路由,但不適用於較長的路由,例如/ foo/bar。你知道這可能是爲什麼嗎? – Derek

+0

你有什麼類型的錯誤? – lifeisfoo

+0

問題原來是試圖加載一些文件與相對URL的前端,導致他們加載index.html一些路線! – Derek

相關問題