IIS重写规则,以重定向特定域的网址到同一域上的不同url
问题描述:
我只是想要一个IIS 7.5重写规则将http://www.domain.com/url1重定向到http://www.domain.com/url2(同域)。这可以通过以下方式实现:IIS重写规则,以重定向特定域的网址到同一域上的不同url
<rule name="Redirect url" enabled="true" stopProcessing="true">
<match url="^url1" />
<action type="Redirect" url="http://www.domain.com/url2"
appendQueryString="false" redirectType="Permanent" />
</rule>
但是,该网站监听几个域,因此上面成为所有域的全局规则。我如何使这个特定于domain.com?已尝试更改匹配网址并添加条件,但无法使其正常工作。谢谢。
答
我得到它的工作是这样的:
<rule name="Redirect url1" stopProcessing="true">
<match url="^url1$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www.)?domain.com$" />
</conditions>
<action type="Redirect" url="http://www.domain.com/url2"
appendQueryString="false" redirectType="Permanent" />
</rule>
答
使用此页面上的答案,我能调整规则为自己。我还添加了查询参数。希望它张贴在这里,在情况下,它可以帮助别人:
<!-- probably requires custom rewrite module, available through web platform installer -->
<rule name="Redirect oldsite.com" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
</conditions>
<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&mode=form"
appendQueryString="false" redirectType="Permanent" />
</rule>
解释某些位:
澄清一些混乱,这种“URL”是部分后域后的第一个斜杠,而不是整个网址。我将把它放在这里,以便它得到任何URL。现在
<match url=".*" />
,我们将添加一个条件,因为我有这个计算机上的多个网站,所以我要确保这条规则适用于只是其中之一。我还用通配符代替“(www。)?”因为通配符会捕获任何子域。
<conditions>
<add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
</conditions>
而且最后要注意的是谁想把多个查询字符串PARAMS的人你需要逃避它们之间的符号,因为如果你不这样做,它不会工作。
3210
为什么在匹配节点中使用^ url1 $?或者,是否打算由OP称为http://www.example.com/url1的内容取代? 这是否合理 - 匹配所有URL即“。*”不是更好吗? PS:你说的其余部分为我工作。 – Jacques
我希望domain.com/subdir1重定向到domain.com/subdir2,但网站会侦听多个域。我不希望这个规则重定向其他领域。 url1将被您想要重定向的起始段(sub dir)替换。条件是针对特定域的。行动具有相同的域和新的细分。 –
有道理,谢谢 – Jacques