我們有一個多域名網站;許多「網站」在同一個Web應用程序中。 而我們想要將網址改寫爲「www。*」風格。當你做每站點的網站It's簡單:Url重寫不按預期工作
<rewrite>
<rules>
<rule name="Canonical host name">
<match url="^(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.mydomainTest\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.mydomainTest.com/{R:1}" />
</rule>
</rules>
</rewrite>
但我們有一些問題,當試圖對任何主機名「規範」正則表達式:
<rewrite>
<rules>
<rule name="Canonical host name">
<match url="^(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([www.]{0,4})([A-Za-z0-9]*)(.com)([.ar]{0,3})$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.{R:2}.com{R:4}" />
</rule>
</rules>
</rewrite>
我們做regex101.com測試和我們正則表達式做到這一點:
正則表達式= ^([www.]{0,4})([A-Za-z0-9]*)(.com)([.ar]{0,3})$
1) 域test = 「www.mydomainTest.com.ar」 結果=
{R:1} = www.
{R:2} = mydomainTest
{R:3} = .com
{R:4} = .ar
2) 域test = mydomainTest.com.ar 結果=
{R:1} =
{R:2} = mydomainTest
{R:3} = .com
{R:4} = .ar
相同的結果用 「URL重寫2.0」 in iis 7.
我們可以確定正則表達式工作正常,但我們的webswite不會按預期重寫。如果您訪問「www.domain.com.ar」或「domain.com.ar」是相同的,則什麼都不會發生。但如果你使用第一個重寫配置,一切正常。 我希望我已經清楚地解釋了這個問題。
那麼,我們忘記了什麼?我們做錯了什麼?
非常感謝!
第二條規則將無法工作,因爲{ R:2}和{R:4}值爲空。它試圖匹配的模式是^(。*),它只會給你{R:0}和{R:1}。 – TejSoft
如果我不使用「」它應該工作? –
Rodrigo