asp.net-mvc - IIS 重写规则 - 检查静态文件是否存在

标签 asp.net-mvc iis rewrite iis-8

有人可以告诉我如何检查静态文件是否存在作为重写规则条件。

我在 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。如果我注释掉检查文件的第二个条件,它就可以工作。在条件满足的情况下,它失败了。

最佳答案

因为它在没有 <add input="/favicon.ico" matchType="IsFile" /> 的情况下工作线,那条线对我来说是可疑的。

我不得不猜测这与您的 /favicon.ico 有关路径,如 matchType="IsFile"是正确的。

this link对于更多示例,他们的解决方案是不使用正斜杠 (/),而是使用反斜杠 (\)。

But I must to use not slash (/) in line <add input="{DOCUMENT_ROOT}/{R:1}" matchType="IsDirectory" negate="true" />. I must to use BACKSLASH (). That line is right: <add input="{DOCUMENT_ROOT}{R:1}" matchType="IsDirectory" negate="true" />

关于asp.net-mvc - IIS 重写规则 - 检查静态文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936893/

相关文章:

c# - ASP.NET-MVC 中表单发布时的 FormCollection 为空

jquery - 如何在 ASP.NET MVC 操作中注册 javascript?

css - 部署到 IIS 服务器系统时 URL 的路径不起作用

php - 如何创建一个 SEO 友好的 URL 来合并 PHP 变量/代码段?

Wordpress add_rewrite_rule 给出 404

带有 redmine 作为子 uri 的 Nginx 不起作用

javascript - 无法将ajax成功的结果设置为mvc中的div html

c# - 如何向私有(private)构造函数注入(inject)依赖?

iis - 如何使用 IdentityServer 4 实现 Windows 身份验证

asp.net - Server 2008 RC2、IIS 7.5、ASP.NET 和请求排队性能不佳