我正在设置一个安装了 URL 重写模块的 win 2012 / IIS 8 网络服务器来替换现有的网络服务器。
它将有 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
如果选择 1),则所有请求(即使是对有效网站的请求)都必须由 URL 重写模块处理。如果您有一大堆规则,这会增加每个请求的处理时间。
如果选择 2),则重写模块只会处理主站点尚未处理的请求。这是更好的选择。
第三个选项是,仍然保留 20 多个网站。每个原始网站一个。然后,对于每个网站,您都有一个较小的重写规则列表,仅针对该特定网站。
尽管此选项需要更长的时间来设置(脚本是您的朋友),但它应该是最快的,因为您让内核模式下的 http.sys 决定如何处理每个请求,它会将请求路由到正确的站点。然后您的重写规则要做的工作就少了。