Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在使用iis url重写服务静态内容时避免301错误_Asp.net_Iis_Url Rewriting - Fatal编程技术网

Asp.net 如何在使用iis url重写服务静态内容时避免301错误

Asp.net 如何在使用iis url重写服务静态内容时避免301错误,asp.net,iis,url-rewriting,Asp.net,Iis,Url Rewriting,我正在尝试使用IIS url重写从其他服务器(或站点)获取图像(静态内容)。下面是编写的sameple规则,它检查任何图像请求,并从同一服务器上的另一个网站提供该请求 <rule name="image" stopProcessing="true"> <match url="^Images/(.+)$" /> <action type="Redirect" url="http://localhost/PGFeedReadAPI/Images

我正在尝试使用IIS url重写从其他服务器(或站点)获取图像(静态内容)。下面是编写的sameple规则,它检查任何图像请求,并从同一服务器上的另一个网站提供该请求

 <rule name="image" stopProcessing="true">
      <match url="^Images/(.+)$" />
      <action type="Redirect" url="http://localhost/PGFeedReadAPI/Images/{R:1}" appendQueryString="false" />
 </rule>


这工作正常,但我得到的结果是301错误,即请求转到服务器it响应301(永久移动)到浏览器,然后浏览器对新url发出新请求。我们能避免这种往返吗?我更愿意在不更改任何代码的情况下实现这一点(即仅更改配置)。如果我遗漏了一些基本概念,请原谅。

请查看本文的答案:

在URL发送到客户端之前,使用响应筛选器更改URL。这将避免301s


我更进一步,添加了缓存,以便在应用程序启动时查询CDN,将静态文件名字典保存到CDN URL并快速交换。它还自动将丢失的文件从本地上传到CDN,并将它们添加到字典中以供将来参考(异步)。

您尝试的方法,只需简单的重写,是行不通的。重写的概念是将可见的url转换为内部url,IIS可以读取并提供此内部url。使用外部服务器这是不可能的工作方式,你相信,这就是为什么你看到重定向。。。重定向是试图修复错误的概念。你能建议一个更好的方法吗?我与我们组织中其他在基于java的站点上工作的团队进行了检查,他们能够在apache服务器中重写规则,该服务器不提供任何301错误,但提供内容。您需要制作一个ashx处理程序,处理程序读取并服务于外部服务器文件。在这种情况下,我使用url重写的方法似乎不正确,因为它们仅基于301永久重定向。如何通过一些配置实现这一点,有什么建议吗@Aristos,你能为ashx处理程序提供一些指针吗?这听起来不错,但有一个问题是,我正在尝试在主项目中不进行任何代码更改的情况下实现这一点,但如果需要,我们可以在项目之外编写代码(如http处理程序并在iis中添加它们)。为了给你更多的背景,我们有单页网站使用骨干网和要求。这意味着实际上没有.NET或MVC代码。我们正在尝试将IIS用作纯web服务器。让我知道这是否有意义。我们可以通过tomcat和apache的组合来实现它。希望对IIS也这样做。