【发布时间】:2018-06-25 21:47:23
【问题描述】:
我已经用谷歌搜索过了。我已经尝试过在 SO 上找到的一千种变体,但无济于事。
这是我的问题:
IIS 上的一个虚拟主机。十个域指向它。应用程序设置为使用单个域的两个主机名,但所有其他别名应重定向到主 site1.domain.com。
site1.domain.com(主站点/host.domain) site2.domain.com(在同一虚拟主机中运行的第二个应用程序)
我不想做的是设置一堆虚拟主机。我试图让这一切在一个虚拟主机中运行并重定向 web.config 中的所有内容。
这是web.config 的最新版本,它处于无限循环中。我明白为什么,但我无法修复第二条规则。
我的想法:
首先查找“第二个”主机名并对其进行排序,因为它是文字,然后将其重定向到其主页。就其本身而言,它工作得很好。
完成后,查找任何不是 site1.domain.com 的内容并将其重定向到 site1.domain.com。
当然,一切都需要重定向到 SSL。
是的,我知道我说得太直白了,但我根本无法通过我需要的逻辑来思考或阅读。
<rewrite>
<rules>
<rule name="site2 HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(site2.)?domain.com" ignoreCase="true" />
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{R:1}" />
</rule>
<rule name="site1 HTTPS redirect" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="(https://site1)?.domain.com" />
</conditions>
<action type="Redirect" url="https://site1.domain.com{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
【问题讨论】:
-
单个规则怎么样,基于协议的单个条件然后使用主机变量作为目标 url,因此它涵盖所有绑定域?
-
如果我的理解正确,我需要托管 两个 单独的主机名,所以我不需要至少两个操作吗?如果 URL = site2,请转到此处 + SSL。如果 URL = 其他所有内容,请转到 site1。
-
可以接受第二个虚拟主机吗?那将是更简单的逻辑。见stackoverflow.com/questions/49842621/…
标签: iis web-config url-rewrite-module