我遇到了一个问题,我一直想用 URL 重写来解决,但无法让它按照我想要的方式运行。我遇到了一个奇怪的情况。很抱歉这个问题的格式不太好,因为我必须尽快解决这个问题。
我在不同位置有两台服务器。均运行 IIS。
一台服务器有一个默认网站,其中包含许多 Web 应用程序。它们通过以下方式访问:
domain.com/Site1
domain.com/Site2
domain.com/Site3
另一台服务器有
new.domain.com/Site1
new.domain.com/Site3
domain.com/Site1
我需要一个自动重定向到的请求new.domain.com/Site1
- 但是,我不能domain.com/Site2
重定向到任何东西,它必须是该特定子应用程序的规则。最重要的是,任何请求,例如domain.com/Site1/Really/Long/Path....
应该重定向到new.domain.com/Site1/Really/Long/Path....
我尝试了很多方法,这是我最近的尝试。它似乎没有起到任何作用,所以显然我没有得到任何东西:
<rewrite>
<rules>
<rule name="Datacenter Redirect" patternSyntax="Wildcard">
<match url="*domain.com*" />
<action type="Redirect" url="new.domain.com/{R:0}" />
</rule>
</rules>
</rewrite>
有人能给我指出正确的方向吗?我对 IIS 比较熟悉,但对重写并不熟悉。
domain.com 是 IIS 7.5
答案1
我没有任何东西可以测试这个,但我相信应该接近这个......
<rewrite>
<rules>
<rule name="Datacenter Redirect" patternSyntax="Wildcard">
<match url="domain.com/([_0-9a-z-]+)" />
<action type="Redirect" url="new.domain.com/{R:1}" />
</rule>
</rules>
</rewrite>
R:1 可能需要是 R:2 但我不确定。
然后,如果我没有误解您的问题,那么您就需要设置一个条件,如果您不希望此重定向发生在 Site2 上,则仅对 Site1 执行此操作。