web.config中的iis重写规则需要帮助

web.config中的iis重写规则需要帮助,iis,asp.net-mvc-4,url-rewriting,iis-7.5,Iis,Asp.net Mvc 4,Url Rewriting,Iis 7.5,我使用的是运行在IIS 7.5中的mvc4应用程序,我设置的重写规则有问题。以下是web.config中的我的部分 <rewrite> <rules> <rule name="RewriteImage"> <match url="/myassets/([_0-9a-z-]+)/images/category/([_0-9]+)-([_0-9a-z-]+)-([0-9]+)" /&g

我使用的是运行在IIS 7.5中的mvc4应用程序,我设置的重写规则有问题。以下是web.config中的我的部分

 <rewrite>
        <rules>
            <rule name="RewriteImage">
                <match url="/myassets/([_0-9a-z-]+)/images/category/([_0-9]+)-([_0-9a-z-]+)-([0-9]+)" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Rewrite" url="/myassets/{R:1}/images/category/cat_{R:2}_{R:4}_{R:3}.jpg" />
            </rule>
        </rules>
    </rewrite>

我想在上面的url中将图像重写到另一个路径

我提供以下url
https://localhost/myassets/en-uk/images/category/123456-5x10-1_my+image+description.jpg
并期望它重写为
https://localhost/myassets/en-uk/images/category/cat_123456_1_5x10.jpg
但事实并非如此

当我在IIS中测试它时,一切正常,但通过浏览器,规则永远不会生效。我正在寻找关于我哪里出错的建议,因为这变得非常令人沮丧

这是我唯一的规则,我尝试了一个简单的重定向规则,将大写url重定向到小写url,效果很好

在我的web.config中,我注意到了一件事,第一个rewrite标记下面有一个蓝色的波形,表示它是system.webserver的未识别部分


应用程序正在集成模式下运行。

问题是您的regexp无效。注:

例如,如果请求此URL: ,及 重写规则是在站点级别定义的:规则模式将URL字符串
content/default.aspx
作为输入

这意味着,您不应该以斜杠开始regexp

例如:

<rule name="RewriteImage">
    <match url="myassets/([_0-9a-z-]+)/images/category/([_0-9]+)-([_0-9a-z-]+)-([0-9]+)" />
    <action type="Rewrite" url="/myassets/{R:1}/images/category/cat_{R:2}_{R:4}_{R:3}.jpg" />
</rule> 


你怎么知道规则永远不会生效?文件是否
https://localhost/myassets/en-uk/images/category/cat_123456_1_5x10.jpg
存在?如果删除
,会怎么样?如果我删除图片
https://localhost/myassets/en-uk/images/category/cat_123456_1_5x10.jpg
存在,并且在您呼叫时
https://localhost/myassets/en-uk/images/category/123456-5x10-1_my+image+description.jpg
它不显示它,对吗?你看到了什么?如果你用这个怎么办?