正则表达式 – 将规则重写为HTTPS,除非在本地主机上

前端之家收集整理的这篇文章主要介绍了正则表达式 – 将规则重写为HTTPS,除非在本地主机上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用答案 given here作为尝试添加重写规则到我的web.config文件的基础。我希望它匹配任何不在本地主机上运行的url以强制https。

这是我现在所做的:

<system.webServer>
  <rewrite> <!-- force https - http://stackoverflow.com/a/15119044/51 -->
    <rules>
      <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
        <match url="^((?!localhost).)*$"/>
        <conditions>
          <add input="{HTTPS}" pattern="^OFF$"/>
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
      </rule>
    </rules>
  </rewrite>
</system.webServer>

我正在尝试使用negative lookaround,以便只匹配URL中不包含“localhost”的url。但这不行。

那么这个规则应该如何设置,以便只重写非本地主机的url?

尝试这个条件:
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
        <match url="^(.*)$"/>
        <conditions>
          <add input="{HTTPS}" pattern="^OFF$"/>
          <add input="{HTTP_HOST}" matchType="Pattern" pattern="^localhost$" negate="true" /> 
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/>
      </rule>
    </rules>
  </rewrite>
</system.webServer>

对localhost模式使用否定条件应该做到这一点。

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