繁体   English   中英

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

[英]assistance needed with iis rewrite rule in web.config

我正在使用在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>

我想在上述网址中执行的操作将图像重写到另一个路径。

我提供以下网址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中确实注意到的一件事,第一个重写标记在说它是system.webserver的未识别部分时呈蓝色波浪状。

应用程序以集成模式运行。

问题是您的正则表达式无效。 官方文档中的注释:

例如,如果请求此URL: http : //www.example.com/content/default.aspx? tabid=2&subtabid =3 ,并且在站点级别定义了重写规则,则:规则模式为URL字符串content/default.aspx作为输入。

这意味着,您不应该以斜杠开头来启动正则表达式。

工作示例是:

<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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM