我们有一个多域名网站;许多“网站”在同一个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