正则表达式 – IIS重写规则在实时环境中不起作用

前端之家收集整理的这篇文章主要介绍了正则表达式 – IIS重写规则在实时环境中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有8台服务器,3台负载均衡,第4台仅用于CMS.

已为主网站添加SSL证书,但不为CMS所在的sobdomain添加SSL证书.

我编写了一条规则,应该找到任何不包含“后台”的网址,并匹配任何其他网页以将其更改为https.

这适用于regexr.com但由于某些原因不起作用

<rewrite>
        <rules>
            <rule name="http to https" stopProcessing="true">
                <match url="(https?:\/\/(?!backoffice).*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://www.WEBSITENAME.com{R:1}" />
            </rule>
        </rules>
    </rewrite>

Url Rewriting 2.1安装在所有4台服务器上,我已经创建了一个用于https的azure设置的负载平衡.

手动转到https工作正常(与负载平衡).

附加信息:

我尝试了很多规则,包括现有的答案.我可以看到发生的事情,比如将资产作为https引入,但页面本身不会重定向.

有2个负载均衡集,一个用于端口80,另一个用于端口443.我不知道这是否是核心,或者可能是重定向未发生的潜在原因.

你的规则应该是这样的:
<rule name="http to https" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
        <add input="{REQUEST_URI}" pattern="/backoffice" negate="true" />
    </conditions>
    <action type="Redirect" url="https://www.WEBSITENAME.com{R:0}" />
</rule>

此规则将使用/ backoffice路径排除请求.

另外,对于混合内容的问题,您需要修复css / js / images到亲戚的路径.例:

<img src="/path/to/your/image.jpg"/>

修复混合内容的另一种方法是创建出站规则,它将更改输出HTML(将http:替换为https :):

<rewrite>

  ...

  <outboundRules>
    <rule name="Rewrite external references to use HTTPS" preCondition="IsHTML">
      <match filterByTags="Script,Link,Img,CustomTags" customTags="HTML5Tags" pattern="^http://(.*)$" />
      <action type="Rewrite" value="https://{R:1}" />
    </rule>
    <preConditions>
      <preCondition name="IsHTML">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>
    <customTags>
      <tags name="HTML5Tags">
        <tag name="Video" attribute="src" />
      </tags>
    </customTags>
  </outboundRules>
</rewrite>

猜你在找的正则表达式相关文章