有人可以告诉我如何检查静态文件是否作为重写规则条件存在。
我在IIS8上,我的网络应用程序是它自己的网站。我想添加一个重写规则来检查文件是否存在,如果是,则应用重写。这是我的代码:
<rewrite>
<rules>
<rule name="Find static gravatar" stopProcessing="true">
<match url="^images/animage.png$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{QUERY_STRING}" pattern="i=(.+)" />
<add input="/favicon.ico" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="/Somewhere/Else/images/{C:1}.png" appendQueryString="false" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
点击网址/images/animage.png?i=SS
在绝望中,我正在检查我知道的文件 - favicon.ico。如果我注释掉检查文件的第二个条件,它就可以了。条件是,它失败了。
答案 0 :(得分:1)
因为它没有<add input="/favicon.ico" matchType="IsFile" />
行,所以该行对我来说是可疑的。
我必须猜测它与/favicon.ico
路径有关,因为matchType="IsFile"
是正确的。
有关更多示例,请参阅this link,其解决方案是不使用正斜杠(/),而是使用反斜杠(\)。
但我必须在行中使用不斜杠(/)&lt; add input =“{DOCUMENT_ROOT} / {R:1}”matchType =“IsDirectory”negate =“true”/&gt;。我必须使用BACKSLASH()。该行是正确的:&lt; add input =“{DOCUMENT_ROOT} {R:1}”matchType =“IsDirectory”negate =“true”/&gt;