【问题标题】:How to Filter urls with URL rewrite rules如何使用 URL 重写规则过滤 url
【发布时间】:2014-03-25 21:08:06
【问题描述】:
<rewrite>
  <rules>
   <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
       <match url="(.*)" ignoreCase="true" />
         <conditions>
          <add input="{HTTPS}" pattern="OFF" />
         </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
         </rule>
      </rules>
  </rewrite>

我在我的 web.config 文件中使用了上述 url 重写规则来为整个站点启用 SSL。 现在我需要更改上述规则以过滤 2 个应该作为 http 工作的 url。 假设这些网址为https://www.domain.com/owner/Marketinghttps://www.domain.com/owner/getinfo。 目前这些网址是 https 因此上面的规则。那么我怎样才能改变上面的规则来过滤以上 2 个网址(即 http://www.domain.com/owner/Marketinghttp://www.domain.com/owner/getinfo )?

【问题讨论】:

    标签: asp.net-mvc-3 c#-4.0 ssl url-rewriting


    【解决方案1】:

    我会添加一个单独的规则来排除不应重定向到 https 的 url。

    我现在无法测试它,因为我手头没有 IIS7。但试一试:

    <rewrite>
      <rules>
        <rule name="Skip HTTPs" enabled="true" stopProcessing="true">
          <match url="^(Marketing|getinfo)" ignoreCase="true" />
          <conditions>
            <add input="{HTTPS}" pattern="OFF" />
          </conditions>
          <action type="None" />
        </rule>
        <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
          <match url="(.*)" ignoreCase="true" />
          <conditions>
            <add input="{HTTPS}" pattern="OFF" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
        </rule>
      </rules>
    </rewrite>
    

    请注意,您必须根据您的示例将该文件放入 /owner/ 目录中。

    您可能已经看过相关文档 - 只需指出我在哪里找到它:

    http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

    这里还有一个使用前瞻正则表达式规则的问题的可能重复项:Rewriting URLs in IIS7

    【讨论】:

    • 您在这里提到了哪个文件('请注意,根据您的示例,您必须将该文件放入 /owner/ 目录。')?我从我的 web.config 文件中得到了上述规则。如果我把你的代码放在那里它应该可以工作知道吗?我说的对吗?
    • 是的。 web.config 文件需要放在该子目录中。如果(例如)您已将其放在 domain.com 的根目录中,您可能必须更改匹配的 url 以包含“owner/”目录。见:stackoverflow.com/questions/10999735/…
    • 你能把这两种情况的单一匹配 url 都放在吗?我的意思是使用 reg-expression 过滤 2 与其他所有不匹配的 url 吗? B'cos 我不认为上面会起作用。当第二条规则适用时会发生什么。它会覆盖第一条规则还是什么?
    • 据我了解,第一条规则适用,并且由于停止处理它到此结束。这里有一个讨论:webmasters.stackexchange.com/questions/10241/… 您也可以使用前瞻方法尝试单个规则:(但我现在无法测试这个) 我刚刚找到了另一个不错的解决方案,请看这里:stackoverflow.com/questions/13320614/…
    • 是的,它的网址不错。我暂时用了你的方法,明天再告诉你结果,谢谢你的支持。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    相关资源
    最近更新 更多