2015-10-27 63 views
0

我有一個相當複雜的問題,因爲我最初使用沒有基本URL的Yeoman fullstack-angular generator開發了一個MEAN應用程序。在開發http://localhost:9000/工作得很好。如何將angular-fullstack應用程序遷移到具有基本URL的域

轉入生產環境,我使用反向Apache代理服務器,其路徑爲example.com/foo,服務於http://localhost:9000。現在當我加載example.com/foo時,我得到了一堆404錯誤(當然),因爲例如example.com/app,example.com/bower_components不存在。

我在這裏有點不在我的聯盟中,沒有從哪裏開始,是否有一些Express/Angular/etc配置變量,我應該尋求幫助進行此遷移?

server/config/express.js沒有提示,我在Grunt文件中找不到任何東西來使wiredep編譯正確的鏈接。或者,甚至有一種方法可以在Apache中執行此操作...

+1

我在Apache的文件:ProxyPass/foo http:// localhost:9000/ProxyPassReverse/foo http:// localhost:9000 /並且它正在爲應用程序提供所有文件未提供的相對於/ foo – inostia

+0

我認爲proxypassreverse必須具有「proxypassreverse/http:// example.com/foo「 – Bob

+0

另一種測試方式是將其放在github頁面上。怎麼樣?創建一個免費的github帳戶,然後創建一個名爲(username).github.io的存儲庫,該存儲庫也將成爲您網站的網址。 – Bob

回答

1

爲了說明問題,我需要在基本URL/foo後面部署MEAN應用程序。做到這一點我:

1)用下面的Apache的規則:

RewriteEngine on 
RewriteRule ^/foo/(.*)$ http://localhost:9000/$1 [P] 

2)現在我們只需要只是讓所有請求去example.com/foo/whatever。編輯基本標記index.html中爲:

<base href="/foo/" /> 

3)所做的所有的HREF和服務相對的而不是絕對的(角提供商調用與<base>標籤作品)

+0

你如何做第3步? – Emidomh

+1

這是很久以前的事了,但我認爲你只需要在任何鏈接或AJAX調用中從URL的開頭刪除開頭'/'。 '' - >''。鏈接是相對於你在步驟2中設置的內容 – inostia

+0

謝謝。實際上,它似乎像這樣用'''做了點。你能否確認我是否像'' – Emidomh

相關問題