1

IIS 中有没有办法重定向以下请求: http://mysite/report1/img/logo.pnghttp://mysite/myapplication/report1/images/logo.pngimg 目录中的所有图像而无需单独显式映射它们?

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

我正在寻找是否有某种方法可以在 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>
4

1 回答 1

2

您使用 URL Rewrite 模块走在正确的轨道上。
在您的情况下,最简单的规则是:

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

它会检查请求的 url 是否匹配^/report1/img/(.+)$,如果匹配,则触发对新文件夹的重写。

如果您想改用重定向:

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

(如果不指定,默认情况下重定向是永久的 (301))

于 2013-03-06T15:27:44.703 回答