2012-02-15 89 views
3

由於某種原因,我似乎無法繞過這些重寫規則,我希望你們可以提供幫助。我想要的是一個出站規則,它將重寫鏈接,img,腳本和輸入標籤的路徑。IIS7 URL重寫出站規則

我想改變這一點:http://www.mysite.com/appname/css/file.css

更改爲:http://cdn.mysite.com/css/file.css

所以,基本上我需要交換的主機名,並從URL刪除應用程序的名稱。我已經爲* .aspx文件設置了前置條件過濾器,但其餘部分對我來說似乎是希臘文。上述

EDIT爲了清楚

URL中的appname是在IIS的應用程序。它是任何使用的appname的佔位符。它可以是我們目前的設置超過50個不同的應用程序的任何。有總是是一個應用程序的名稱。也許這將使規則更容易。

在這種情況下,www.mysite.com的主機名也可以在子域方面略有不同。它可能是www1.mysite.com,www2等。此外,只是意識到我需要維護SSL,如果有的話。

所以,我認爲當涉及到它時,我真的只需要將URL減去應用程序名稱,然後將其附加到新域中,同時尊重所使用的協議。

原始地址:HTTP(S):// {主機}/{APPNAME}/{URL}

輸出:HTTP(S)://cdn.mysite.com/ {URL}

回答

5

我假設你的網站域名始終是相同的,那麼這個規則應該做的:

<rule name="CdnRule" preCondition="OnlyAspx" > 
    <match filterByTags="Img, Input, Link, Script" pattern="^(.+)://.+?\.(.+?)/.+?/(.*)" /> 
    <action type="Rewrite" value="{R:1}://cdn.{R:2}/{R:3}" /> 
</rule> 

<preConditions> 
<preCondition name="OnlyAspx"> 
    <add input="{PATH_INFO}" pattern=".+\.aspx$" /> 
</preCondition> 
</preConditions> 

編輯:改變根據澄清的問題

我假設子域(WWW,WWW2,...)總是在那裏,它必須被忽略的目標網址。

+0

這對調整我的先決條件很有用。我使用* .aspx的通配符匹配{URL}。 – IchibanChef 2012-02-16 14:20:54

+0

我改變了答案以反映你對這個問題的編輯。 – Tomek 2012-02-16 14:45:34

+0

這正是我所需要的。謝謝! – IchibanChef 2012-02-16 15:04:28