使用iis网址重写将一个域重定向到另一个域时,如何解决https警告?

时间:2019-03-22 22:58:48

标签: iis https url-rewriting cross-domain

我有两个域,一个域被缩短,在发送带有查询字符串的文本消息时使用,因为常规域太长。当前,位于不同IP地址上的网页会将短域重定向到长域,如果查询字符串正确,则将其重定向到特定页面,否则将其重定向到主页。我将移至Azure,在那里我将只有一个IP地址。因此,我认为IIS URL Rewrite将能够处理此任务。长域是仅HTTPS站点,并且有一个HTTPS规则。短域不是;链接始终仅是HTTP。我已经设置了URL Rewrite,以便在HTTPS规则和这两个规则都设置了stopProcessing =“ true”之前执行重定向。但是,当我访问http://mytxt.net时,出现浏览器警告SSL证书无效。

该服务器是Windows Server 2016 IIS10。我专门搜索了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启用SSL时在客户端进行协议更改?

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。问题是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>

以正确的查询字符串开头的带有或不带有www.的URL,将被重定向到处理这些请求的页面;如果没有正确的查询字符串,它们将被重定向到网站的主页。