2010-08-11 65 views
2

我們正在使用一個共享的主機來節省成本。我們的公共網站和我們的SaaS產品託管在共享主機上的虛擬目錄(/ app和/ public)下。我們爲我們的客戶提供虛榮子域名(即client1.myproduct.com),所以我們有一些重寫規則來使所有事情都正常工作。相對URL,URL重寫和虛擬目錄 - 哦,我的!

類似於實際問題,但我們如何設置它是因爲HTTP_HOST參數沒有以www開頭,如果子域不是空的,我們重定向到/ app,否則我們會顯示任何內容根。

但是,相對URL會出現問題。例如,

~/Scripts/jQuery.js 

解析

/app/Scripts/jQuery.js 

但由於重寫規則,你實際上是通過

/Scripts/jQuery.js 

顯然導航到劇本我可以改變所有的URL是絕對的(即/Scripts/jQuery.js而不是~/Scripts/jQuery.js),但由於顯而易見的原因,這是次優的。

它看起來像ResolveUrl使用TemplateSourceDirectory功能來解析相對URL。是否有可能在某處覆蓋它的價值?有沒有更好的方式來處理我錯過的東西?

+0

我不明白:重寫規則是好還是錯?如果它指向一個錯誤的url,爲什麼不改變重寫規則? – 2011-01-13 14:56:10

回答

1

布拉德,

這是一個有點難以回答,不知道你用什麼來重寫你的網址。過去,人們傾向於使用應用程序的web.config中定義的某些東西,該東西經過了早期的ISAPI驅動程序操作。

例如,Helicon的ISAPIRewrite發生得很早,而IIS7最近的URL重寫稍後在處理中發生。

它也將有助於查看您的實際重寫規則,包括其條件,要匹配的正則表達式模式以及要輸出的重寫模式。

這就是說,除非我簡單地說明了這一點,你不能簡單地檢測URL的前綴是否帶有波浪號「〜」,並將其剝離到先前的規則中。 (將該規則標記爲繼續執行其餘規則)

然後,當您處理下一個規則時,它會使用以「/」開頭的相對URL模式。

讓我知道我是否遺漏了一些東西,如果是的話,請提供我上面提到的信息。