web.config:仅在* rewritten * path存在时重写

时间:2014-02-21 06:03:27

标签: iis web-config rewrite

我希望只有在重写路径存在的情况下才能从http://example.com/assets/file.ext重写为/sites/example.com/assets/file.ext。我可以更广泛地这样做:

  <rules>
    <rule name="assets" stopProcessing="true">
      <match url="^assets/(.+)$" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^(www\.)?(.*)$" />
      </conditions>
      <action type="Rewrite" url="sites/{C:2}/assets/{R:1}" />
    </rule>
  </rules>

但是当我添加条件<add input="{REQUEST_FILENAME}" matchType="IsFile" />时,它会尝试匹配原始路径中的文件。

可以这样做吗?

1 个答案:

答案 0 :(得分:2)

你想要的规则是我相信这个:

<add input="{APPL_PHYSICAL_PATH}sites\{C:2}\assets\{R:1}" matchType="IsFile" />

显然,这必须在主机条件之后,以便反向引用。