加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:36:24 所属栏目:百科 来源:网络整理
导读:我正在使用答案 given here作为尝试添加重写规则到我的web.config文件的基
我正在使用答案 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模式使用否定条件应该做到这一点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读