我想在IIS 8.5中使用URL重写模块将任何非https流量从http://something.com:112重定向到https://something.com:444(请注意这些不是标准的http和https端口号)。
我尝试使用此重写规则,但它不起作用:
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{SERVER_PORT}" pattern="^444$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}:444/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
我在失败的请求日志中得到的错误是:
ModuleName IIS Web Core 通知MAP_REQUEST_HANDLER HttpStatus 404 找不到HttpReason HttpSubStatus 0 ErrorCode系统找不到指定的文件。 (0x80070002)
我做错了什么?
答案 0 :(得分:0)
我找到了答案,我错误地使用HTTP_POST,其中包含SERVER_NAME和HTTP_PORT。相反,我使用了这个动作,似乎工作正常:
我也注意到我不需要检查这两个条件。这个实际上做了我需要的,因为我们有一些网站在其他https端口上运行:
<rewrite>
<rules>
<rule name="Redirect to HTTPS on port 444" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{SERVER_NAME}:444/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>