我已經拆分了子域之間的一些頁面,並希望在某些情況下對不同子域上的不同頁面進行URL重寫。除了文件中的最後兩條規則之外,一切都是重寫規則。最後兩條規則確定哪個子域用於路由我固定的路徑。IIS7.5 URL重寫正則表達式匹配,當它不應該
我這樣做的方式是,如果我在前面加上下劃線(_)的路徑,然後它停留在子域A.如果我在前面加上一個符號(〜)的路徑,然後它會被重定向到子域B.
所以我有這樣的規則:
<rule name="Login rule" stopProcessing="false">
<match url="(.*?)/?old-path/Login\.aspx$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_METHOD}" pattern="GET" />
</conditions>
<action type="Rewrite" url="~new-path/login.aspx" />
</rule>
請注意沒有對URL的末尾一個aspx。它繼續處理,但是在重定向之前,我在列表末尾有一個通用重寫規則。這是爲了去除子域A(WWW)的所有ASPX擴展,但我想離開ASPX擴展子站點B(請不要建議刪除建議的2號子域。謝謝:)
<rule name="Remove ASPX" stopProcessing="false">
<match url="^([^www\.]+)\.aspx$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="_{R:1}" />
</rule>
的問題是,這是行不通的,因爲所有的URL在開頭都有www。我對正則表達式並不擅長,但我猜測我只需要將此規則應用於所有包含波形符號的網址。我想這一點,但它不是真正的工作之一:
<match url="^_+\.aspx$" />
基本上我想這個規則忽略我已經重寫,以在他們身上有~
的URL,但去掉ASPX,如果我把_
在開始路徑。
有什麼建議嗎?
它實際上是'_',我想重定向。但是我把你的建議改爲'^(。* _。*)\。aspx $',並且測試網址匹配了!謝謝。 – Nathan 2012-01-16 17:32:23