2017-09-15 58 views
-1

我想解決一個簡單的問題,特別是單頁面應用程序和angularjs。肯定有一個簡單的方法來做到這一點,我不知何故失蹤。從非基礎url啓動一個angularjs應用程序

首先考慮非單頁應用程序的工作原理。假設我在根目錄中有一個index.html文件,而在其中有一個名爲other的子文件夾。如果我在瀏覽器中啓動mysite.com/,它將默認提供index.html,並且一切正常。如果我啓動mysite.com/other/other.html這也沒關係,因爲other.html是一個真正的文件,包括所有配套資源文件等的

現在考慮單頁角的應用程序,比方說使用UI的路由器。我創建了一個途徑:國有=其他,URL = /其他和模板=其他/ other.html附帶

如果我啓動mysite.com的控制器。它加載角度index.html文件,並按預期得到主頁。那麼我可以去瀏覽器,輸入mysite.com/#/other,它會正確地加載網頁other.html預期

問題是當我想要直接啓動應用程序到mysite.com/other。我遇到的第一個問題是404,因爲即使有其他目錄,也沒有index.html,而other.html文件只是一個模板,因此不會加載運行該應用程序所需的資源。

不知何故,服務器需要知道,對於一個角度應用程序,而無需在最後一個資源文件名的任何URL必須加載index.html,然後讓角路由器提供實際的頁面。

我甚至與服務器嘗試這樣做,讓它返回index.html的,當你請求URL mysite.com/other。這確實能夠成功加載角度應用程序,但令我驚訝的是,mysite.com/other現在在url中顯示mysite.com/other//。換句話說,它現在將其他視爲基礎URL的一部分,因此我必須再次鍵入/ other(即mysite.com/other//other)才能顯示其他頁面。

我曾嘗試使用基本標籤和html5mode各種實驗,但我還是沒能找到一個合適的解決方案。

+0

總之,您試圖在此完成什麼?將mysite.com/other重定向到mysite.com/#/other? – yesIcan

+0

某種意義上說是。我希望用戶能夠保存鏈接mysite.com/other,然後啓動應用程序到該頁面,就像您可以在大多數網站上一樣。 – smjhunt

+0

試試https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module – yesIcan

回答

0

我似乎想出了一個解決方案。我將基礎網址設置爲/並打開html5mode。我還必須將服務器配置爲返回index.html,以便在最後沒有文件的任何請求中(即沒有擴展名)

相關問題