如何使用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上试过了。
需要更好的解决方案
答案 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" />