Amazon Elastic Load Balancer下的特殊非www到www重定向

时间:2011-10-16 21:59:37

标签: redirect iis-7 amazon-web-services

如何使用IIS的重写规则扩展(写入web.config)在IIS7中创建301重定向,这将允许将非www重定向到www - 但是,我不想使用(。*),I希望URL重写器忽略DNS之类的URL,因此它可以在Amazon Load Balancer下工作。没有它,Amazon Load Balancer将无法读取运行状况检查文件,因为它将被重定向,而不是获得200OK,它将获得301.

所以我实际上需要一个匹配包含mydomain.com的URL的规则,或者当然需要从它开始的URL,因此它不会循环。

现行规则并不好:

<rewrite>
  <rules>
    <rule name="CanonicalHostNameRule1">
       <match url="(.*)" />
         <conditions>
           <add input="{HTTP_HOST}" pattern="^www\.mydomain\.com$" negate="true" />
         </conditions>
         <action type="Redirect" url="http://www.mydomain.com/{R:1}" />
    </rule>
 </rules>
</rewrite>

这会将dns.amzn.com等网址重定向到www.mydomain.com - 我已经在IIS7上试过了。

需要更好的解决方案

1 个答案:

答案 0 :(得分:1)

你有没有找到解决方案..

我使用{HTTP_USER_AGENT}添加了与ELB(用户代理)不匹配的条件。 这阻止了规则为ELB运行,但我现在只是测试它。

欢呼

另外添加:

<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_USER_AGENT}" pattern="ELB-HealthChecker" negate="true" />
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="HTTPS" negate="true" />                        
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule> 

你想要的是

<add input="{HTTP_USER_AGENT}" pattern="ELB-HealthChecker" negate="true" />