IIS中是否有办法重定向以下请求:
对于img目录中的所有图片,http://mysite/report1/img/logo.png
到http://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>
答案 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))