iT邦幫忙

0

同一個域名下 兩個網站用語系路徑做區分 css、javascript的路徑如何做到不掛上語系的前綴

eminthwu 6 月前4027 瀏覽

我有一個網址 abc.com,希望能做到 abc.com/zh-TW 、 abc.com/en-US
兩個網址呈現出來的是不同的站台

因此在開發時 tw、en分別是兩個不同的網頁專案,(分別是asp.net webform、asp.net mvd)各自都可以自行掛載在webserver上面執行
因此頁面上載入css 或是 javascript時 多半就是這樣寫 src="/script/aaa.js"

現在要部署上正式環境,由於沒有負載平衡所以沒辦法兩個設立兩個站台再經由判斷語系路徑去選擇真正的站台 (這是我的優先選項)

目前是用iis上新增子網站的方式將兩個站台平行置於跟目錄底下,也分別在Route上動手腳頁面的request基本上沒有問題,但是css,javascrip這些不經過路由的request就變成404了...

我希望可以保持站台的獨立性,不需要一定要綁在語系路徑下才可以運作,請問各位有什麼建議可以提供給我嗎?

看更多先前的討論...收起先前的討論...
窮嘶發發發 iT邦高手 1 級 ‧ 6 月前 檢舉
你需要三個站台才行 abc.com , abc.com/zh-TW , abc.com/en-US 三個
後面兩個站台的共用元件可以放在第一個下面
這樣就不會有找不到元件的狀況了
而且判別語系的 JS 也是放在第一個下面,應該不會有人會自己打後面的路徑吧
JB iT邦新手 5 級 ‧ 6 月前 檢舉
可以嘗試看看設定<base href="/zh-tw/">是否可以解決您的問題。
窮嘶發發發 iT邦高手 1 級 ‧ 6 月前 檢舉
用樓上說的方法,可能會有點問題,因為樓主的網頁專案所有的檔案連結都使用 相對路徑
那使用樓上這種方法的話,到了 US 的網站,那堆圖片呢,那堆供人下載的檔案路徑
難道都要搬到 TW 下面嗎,還有網頁的內連結也是,等於用二樓的方法,你要改的是所有網頁內的所有的連結
個人是不建議如此做,我的方法是把共用元件放在根目錄下面,可以直接用 ../script/xxx.js 這樣的方式指定
不管 TW 或是 US 都可以這麼指定,只需要修改共用元件的路徑就行,不需要改其他元件的路徑
eminthwu iT邦新手 5 級 ‧ 5 月前 檢舉
謝謝各位提供的意見,由於希望兩個站台完全的獨立,因此js或是圖片這些檔案不打算放置於根網站中,因為對於開發人員來說他還是必須要架設一個根網站的環境才能完整呈現子網站的內容。
最後我採用的方法是在.net render html的階段去掃整個html並將所有相對路徑為根目錄開頭的位置,並依照該子網站對應的語系加上前綴的路徑,目前這樣做法成效還不錯;
另外如果是MVC的專案則還要擴充view engine的規則,這樣在引用部分檢視的時候才不會找不到檔案。

尚未有邦友回答

立即登入回答