使用 iis url 重写将一个域重定向到另一个域时,如何修复 https 警告?
How do I fix https warning when redirecting one domain to another domain using iis url rewrite?
我有两个域,一个被缩短了,用于发送带有查询字符串的短信,因为常规域太长了。目前,不同 IP 地址上的网页会将短域重定向到长域,如果它具有正确的查询字符串,则重定向到特定页面,否则重定向到主页。我要搬到 Azure,在那里我将只有一个 IP 地址。所以我认为 IIS URL Rewrite 能够处理这个任务。长域是一个仅限 HTTPS 的站点,它有一个 HTTPS 规则。短域不是;链接始终仅为 HTTP。我已经设置 URL Rewrite 以在 HTTPS 规则之前执行重定向,并且为这两个规则设置了 stopProcessing="true"。但是当我访问 http://mytxt.net 时,我收到一个浏览器警告,提示 SSL 证书无效。
服务器是 Windows Server 2016 IIS 10。我专门搜索了 Google 和 Stack Oveflow,但没有找到与我的问题相匹配的内容。下面是代码。
<rule name="Txt QS Redirect" stopProcessing="true">
<match url="^(www\.)?mytxt\.net"/>
<conditions>
<add input="{QUERY_STRING}" pattern="^MyQS"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
</rule>
<rule name="Txt No QS Redirect" stopProcessing="true">
<match url="^(www\.)?mytxt\.net"/>
<conditions trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
</rule>
<rule name="HTTPS Redirect">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
</rule>
不应该先重定向,然后协议更改为 HTTPS 吗?或者浏览器是否首先检查 SSL,当 IIS 说它已启用时,在客户端上进行协议更改?
我解决了我的问题。问题出在 match url=
正则表达式上。也许某些 IIS URL Rewrite 大师可以告诉我们原因,因为我仍然不明白。我用Failed Request Tracing发现不匹配。此方法对于解决 URL 重写问题非常有用!我将其更改为 match url=".*"
并将原始正则表达式移动到一个条件。这是工作代码。
<rule name="Txt QS Redirect" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
<add input="{QUERY_STRING}" pattern="^MyQS"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
</rule>
<rule name="Txt No QS Redirect" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
<add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
</rule>
URLs,有或没有 www.
,以正确的查询字符串开头的将被重定向到处理这些请求的页面;如果没有正确的查询字符串,他们将被重定向到站点的主页。
我有两个域,一个被缩短了,用于发送带有查询字符串的短信,因为常规域太长了。目前,不同 IP 地址上的网页会将短域重定向到长域,如果它具有正确的查询字符串,则重定向到特定页面,否则重定向到主页。我要搬到 Azure,在那里我将只有一个 IP 地址。所以我认为 IIS URL Rewrite 能够处理这个任务。长域是一个仅限 HTTPS 的站点,它有一个 HTTPS 规则。短域不是;链接始终仅为 HTTP。我已经设置 URL Rewrite 以在 HTTPS 规则之前执行重定向,并且为这两个规则设置了 stopProcessing="true"。但是当我访问 http://mytxt.net 时,我收到一个浏览器警告,提示 SSL 证书无效。
服务器是 Windows Server 2016 IIS 10。我专门搜索了 Google 和 Stack Oveflow,但没有找到与我的问题相匹配的内容。下面是代码。
<rule name="Txt QS Redirect" stopProcessing="true">
<match url="^(www\.)?mytxt\.net"/>
<conditions>
<add input="{QUERY_STRING}" pattern="^MyQS"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
</rule>
<rule name="Txt No QS Redirect" stopProcessing="true">
<match url="^(www\.)?mytxt\.net"/>
<conditions trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
</rule>
<rule name="HTTPS Redirect">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent"/>
</rule>
不应该先重定向,然后协议更改为 HTTPS 吗?或者浏览器是否首先检查 SSL,当 IIS 说它已启用时,在客户端上进行协议更改?
我解决了我的问题。问题出在 match url=
正则表达式上。也许某些 IIS URL Rewrite 大师可以告诉我们原因,因为我仍然不明白。我用Failed Request Tracing发现不匹配。此方法对于解决 URL 重写问题非常有用!我将其更改为 match url=".*"
并将原始正则表达式移动到一个条件。这是工作代码。
<rule name="Txt QS Redirect" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
<add input="{QUERY_STRING}" pattern="^MyQS"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/respond.aspx" appendQueryString="true" redirectType="Temporary"/>
</rule>
<rule name="Txt No QS Redirect" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?mytxt\.net"/>
<add input="{QUERY_STRING}" pattern="^MyQS" negate="true"/>
</conditions>
<action type="Redirect" url="https://www.myfullsite.net/" redirectType="Permanent"/>
</rule>
URLs,有或没有 www.
,以正确的查询字符串开头的将被重定向到处理这些请求的页面;如果没有正确的查询字符串,他们将被重定向到站点的主页。