Asp.net 如何使用urlrewriting.net将图像请求重定向到另一个文件夹

Asp.net 如何使用urlrewriting.net将图像请求重定向到另一个文件夹,asp.net,urlrewriting.net,Asp.net,Urlrewriting.net,我正在使用urlrewriting.net重定向级联样式表映像请求。我一直在努力,但运气不好。下面是我添加的重写: <add name="reportImagesRedirect" virtualUrl="^~/estadisticas/(.*).png" rewriteUrlParameter="ExcludeFromClientQueryString" destina

我正在使用urlrewriting.net重定向级联样式表映像请求。我一直在努力,但运气不好。下面是我添加的重写:

<add name="reportImagesRedirect"
                    virtualUrl="^~/estadisticas/(.*).png"
                    rewriteUrlParameter="ExcludeFromClientQueryString"
                    destinationUrl="~/images/$1"
                    ignoreCase="true" />

我希望web服务器查看图像

您需要将其翻转过来

<add name="reportImagesRedirect"
                destinationUrl="~/images/$1.png"
                rewriteUrlParameter="ExcludeFromClientQueryString"
                virtualUrl="^~/estadisticas/(.+).png$"
                ignoreCase="true" />
是我写的一篇关于使用UrlRewriting.Net实现无扩展URL的小文章

编辑:我更改了一些参数。如果要保留扩展,则需要在虚拟和目标的末尾都有.png

编辑:您可能还需要对system.webServer标记进行以下修改

<system.webServer>
     <modules runAllManagedModulesForAllRequests="true">
     </modules>
</system.webServer>


您可能需要设置一个。默认情况下,IIS不会将对ASP.NET文件(.aspx、.asmx、.axd、.ashx等)以外的任何文件的请求转发给ASP.NET处理程序。由于重写器在ASP.NET处理程序中运行,因此对映像的请求永远不会到达它。添加通配符映射会强制IIS让ASP.NET(以及相应的重写处理程序)处理所有请求,包括图像。

Um。。。属性的顺序完全没有区别。我用一个例子编辑了我的问题,以防不够清楚。你为什么要投票否决我的答案。我并没有“只是”重新排列属性的顺序。我改变了虚拟现实和命运的书写方式。VirtualUrl需要正则表达式,而DestinationUrl需要位于实际文件所在的位置。。。它还必须包含扩展名。好的,正则表达式有问题。。。由于请求已发送到…\estadisticas\^\images\spines.png,而不是…\images\spines.png。我修好了,是的,你说得对,劳尔。我没有注意到这一点,因为我只是在修改他的xml。我现在就编辑。我不建议使用通配符映射,只是不需要它。同样,IIS7和.NET 3.5允许您从web.config中执行此操作[runAllManagedModulesForAllRequests=“true”],并同时减少对通配符映射的需要。@Rock:如果您在经典模式下运行IIS 6或IIS 7,则绝对需要它。我从不假设任何特定的版本。还有,不要再发牢骚了。我看到你否决了我的答案,因为你认为我否决了你的答案,事实并非如此。不是很成熟,IMO.virtualur=“^~/estadisticas/(.+).png$”——注意正则表达式以^开头,也以$结尾。这将包含请求,因此如果您获得“~/estadiccas/somthing.png.aspx”,它将不会尝试映射到图像。这并不是说它永远不会发生,这只是一种良好的实践