我有两个域,一个域被缩短,在发送带有查询字符串的文本消息时使用,因为常规域太长。当前,位于不同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时在客户端进行协议更改?
答案 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,将被重定向到处理这些请求的页面;如果没有正确的查询字符串,它们将被重定向到网站的主页。