2010-11-09 180 views
6

我有一个.net 4.0 Web应用程序托管在IIS7服务器上。IIS 7 URL重写规则不适用

看完这篇文章:http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/关于从另一台服务器提供静态内容,这样cookies不会随每个静态文件的请求一起发送,我试过了,但没有取得太大的成功。

这是写在web.config文件中的一部分:

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="images" stopProcessing="true"> 
       <match url="^images/(.*)$" /> 
       <action type="Rewrite" url="http://static-server.com/images/{R:1}" appendQueryString="true" logRewrittenUrl="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

利用所定义的这条规则,每一个环节在图像文件夹中的文件应该rewriten到静态服务器URL。但是这完全不起作用,现在图像文件夹中的每个图像都返回404未找到。任何想法是什么可能导致这种行为或不同的解决方案,如何从不同的服务器上的特定文件夹提供文件,而不必经过大量代码并更改所有链接以链接到静态服务器?

我也尝试使用重定向动作类型,而不是重写动作,这实际上工作,但它无视我试图服务于不同服务器上的文件的原因(这样请求发送给我动态内容服务器具有所有必需的cookie,并被重定向到静态服务器,这实际上比从动态内容服务器提供图像更差)。

回答

2

我不认为这个规则会为你解决这个问题。它可能不会重写发送给用户的页面中的链接。

您链接到的文章建议您与“IIS Application Request Routing module”一起执行此操作。这是路由模块实际上改变发送到客户端的文件内的链接。

+0

我按照http://learn.iis.net/page.aspx/485/define-and-configure-an-application-request-routing-server-farm/逐步安装了'Application Request Routing'模块和http://learn.iis.net/page.aspx/484/configure-3-tier-deployment-architecture-using-application-request-routing/没有正面结果。只有那时我没有得到一个404,但500一个。也许配置ARR模块的方式有什么不对吗? – Atzoya 2010-11-09 14:10:47

+0

什么是500错误(检查日志) – 2010-11-09 14:24:06

+0

它肯定是ARR模块导致的问题,但我似乎不能配置它。已决定采用不同的方法(手动更改所需资源的一些路径),直到找到如何正确配置模块。当我发现是什么导致了这个问题时,我会用我所做的更新我的帖子。 – Atzoya 2010-11-11 16:02:07