IIS 8.0目录HttpRedirect

时间:2013-03-05 23:46:48

标签: url-rewriting web-config http-redirect url-rewrite-module iis-8

IIS中是否有办法重定向以下请求: 对于img目录中的所有图片,http://mysite/report1/img/logo.pnghttp://mysite/myapplication/report1/images/logo.png,而不必单独明确地映射它们?

附加要求 - 我在映射到'report1'虚拟目录的驱动器上有数千个报告 - 每个都有自己的'img'目录 - 因此没有合理的方法可以使用IIS管理器单独映射这些目录。< / p>

我正在查看是否有某种方法可以在IIS服务器web.config文件中添加通配符(或其他)HttpRedirect,以正确映射所有报告的所有图像。我试过了:

<add wildcard="*res/img/" destination="/reporter/content/images/reportimages" />

但这似乎没有效果。

编辑:更多的研究表明,使用URL Rewrite模块可能会有效......但到目前为止,我还没有让它工作。

我的规则如下(在web.config中):

<rules>
    <rule name="Redirect rule1 for ImageRedirect">
        <match url=".*" />
            <conditions>
                <add input="{ImageRedirect:{REQUEST_URI}}" matchType="Pattern" pattern="/res/img/(.+)" ignoreCase="true" negate="false" />
            </conditions>
            <action type="Redirect" url="{HTTP_HOST}/reporter/content/reporterimages/{C:1}" appendQueryString="false" />
     </rule>
</rules>

1 个答案:

答案 0 :(得分:2)

您使用网址重写模块走在正确的轨道上 您案例中最简单的规则是:

<rule name="Rewrite images" stopProcessing="true">
  <match url="^/report1/img/(.+)$" />
  <action type="Rewrite" url="/myapplication/report1/images/{R:1}" />
</rule>

检查请求的网址是否与^/report1/img/(.+)$匹配,如果是,则触发重写到新文件夹。

如果您想使用重定向:

<rule name="Redirect images" stopProcessing="true">
  <match url="^/report1/img/(.+)$" />
  <action type="Redirect" url="/myapplication/report1/images/{R:1}" />
</rule>

(如果您没有指定它,默认情况下Redirect是永久性的(301))