我正在设置一个安装了 URL 重写模块的 win 2012 / IIS 8 Web 服务器以替换现有的 Web 服务器。
它将有 3 个频繁使用的站点映射到不同的域名。
- domain1.com(IIS 中的站点 1,主机名绑定到 domain1.com)
- domain2.com(IIS 中的站点 2,主机名绑定到 domain2.com)
- domain3.com(IIS 中的站点 3,主机名绑定到 domain3.com)
我遇到的问题是我有许多遗留域(~20)需要重定向(301)到这些站点和外部站点。
1) 我可以使用在服务器级别定义的 URL 重写规则来创建这些重定向
或者
2)我可以创建一个额外的站点,并使用主机名绑定将所有这 20 个左右的名称绑定到该站点,然后在该站点内使用 - URL 重写规则
或者
3)还有什么会更有效?
我有点倾向于选项 2,因为我猜站点名称绑定会比评估所有传入请求的 URL 重写规则更有效 - 并且 URL 重写规则只会在匹配的主机名进入时评估。寻找在现有日志中,旧 URL 的流量 < 1%
如果您选择 1),则您的所有请求(甚至是对有效站点的请求)都必须由 url 重写模块处理。如果您有一大堆规则,这会增加每个请求的处理时间。
如果您选择 2),则只有主站点尚未处理的请求由重写模块处理。这是优选的。
第三种选择是,仍然拥有 20 多个站点。每个原始站点一个。然后,对于每个站点,您只针对该特定站点的重写规则列表要小得多。
即使这个选项需要更长的时间来设置(脚本是你的朋友),它应该是最快的,因为你让内核模式下的 http.sys 决定如何处理每个请求,它将请求路由到正确的站点。那么你的重写规则要做的工作就更少了。