IIS url 重写角色,除了一些 url

Posted

技术标签:

【中文标题】IIS url 重写角色,除了一些 url【英文标题】:IIS url rewrite role except some urls 【发布时间】:2012-10-30 12:18:59 【问题描述】:

我在 URL 重写中得到了这条规则,它使用 HTTP 将对站点的每个请求重写为 HTTPS

<rule name="Force HTTPS" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="HTTPS" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://HTTP_HOST/R:1" appendQueryString="true" redirectType="Permanent" />
                </rule>

我在这个角色中需要另一个规则或例外来重写或重定向特定的 URL 到 HTTP。

这可能吗?

【问题讨论】:

【参考方案1】:

您可以将不想执行重定向到 HTTPS 的异常添加为额外条件(不等于该 URL),如下所示:

<rule name="Force HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="HTTPS" pattern="off" ignoreCase="true" />
        <add input="REQUEST_URI" negate="true" pattern="^/noredirect/forthis/page\.aspx$" ignoreCase="true" />
        <add input="REQUEST_URI" negate="true" pattern="^/noredirect/forthis/page-as-well\.aspx$" ignoreCase="true" />
        <add input="REQUEST_URI" negate="true" pattern="^/noredirect/forthis/page-as-well-too\.aspx$" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="https://HTTP_HOST/R:1" appendQueryString="true" redirectType="Permanent" />
</rule>

【讨论】:

它会是这样的>> , ?谢谢回复 只要 domain.com 是您网站根目录中的一个目录,那么可以。请注意,您应该在正则表达式中使用domain\.com 来逐字匹配 domain.com,否则点将使正则表达式接受那里的任何字符。如果您打算将 domain.com 作为域名进行匹配,则不能使用此选项,因为该域名未包含在 REQUEST_URI 变量中。 我使用 IIS 向导从 URL 写入中排除特定域,结果创建了这样一行: 在条件节点中。虽然 SubStringOfURL 是我要排除的 URL 的子字符串。 还可以尝试将 negate="true" 从标签中删除...这对我有用 很高兴这是一件事。【参考方案2】:

Web.config 中的例外规则,不将“NotSecurePage.ashx”重定向到 https:

<system.webServer>
<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="HTTPS" pattern="off" ignoreCase="true" />
        <add input="REQUEST_URI" matchType="Pattern" pattern="\bNotSecurePage.ashx\b" ignoreCase="true" negate="true" /> <!-- Crystal não suporta imagens https.. Criando exceção para imagens de barcode, utilizadas no crystal -->
      </conditions>
      <action type="Redirect" redirectType="Found" url="https://HTTP_HOST/R:1" />
    </rule>
  </rules>
</rewrite>
</system.webServer>

【讨论】:

以上是关于IIS url 重写角色,除了一些 url的主要内容,如果未能解决你的问题,请参考以下文章

IIS7 301 URL 重写给出 200 状态而不是 301 状态

IIS URL 重写与 URL 路由

URL 重写和 IIS Express:有些规则有效,有些则无效

iis url重写模块 是干啥用的

IIS URL 重写模块:基于 QueryString 的重定向

thinkphp在iis下如何写规则url重写