1

我有一个 heckuva 时间让这个工作。我已按照以下位置的说明进行操作:

http://learn.iis.net/page.aspx/659/reverse-proxy-with-url-rewrite-v2-and-application-request-routing/

作为一个简单的测试,我正在尝试将对媒体目录(CSS、图像等)中任何内容的请求代理到单独主机上的同一目录。这是配置:

<rewrite>
    <rules>
       <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="^(media/.*)" />
            <conditions>
                 <add input="{CACHE_URL}" pattern="^(https?)://" />
             </conditions>
             <action type="Rewrite" url="{C:1}://mystatichost/{R:1}" />
        </rule>
     </rules>
 </rewrite>

在我的Default.master我有一个像这样的图像标签:

<img src="/media/img/homepage.jpg" />

但我不断收到该图像请求的 404 错误。该文件/media/img/homepage.jpg肯定存在于mystatichost. 我错过了什么/误解了什么?

4

1 回答 1

0

在我看来,你的正则表达式有点奇怪。

而不是<match url="^(media/.*)" />,您应该使用<match url="(media/.*)" />. 否则你的匹配只会从 URL 字符串的开头开始,这永远不会起作用,因为它总是以http.

所以,为了缩短它,试试这个:

<rewrite>
  <rules>
   <rule name="ReverseProxyInboundRule1" stopProcessing="true">
        <match url="(media/.*)" />
        <conditions>
             <add input="{CACHE_URL}" pattern="^(https?)://" />
         </conditions>
         <action type="Rewrite" url="{C:1}://mystatichost/{R:1}" />
    </rule>
  </rules>
</rewrite>

如果这不起作用,您是否需要 HTTPS 来处理对 mystatichost 的所有请求?

也许您可以删除该<conditions>部分,然后设置<action type="Rewrite" url="http://mystatichost/{R:1}" />.

祝你好运!

于 2016-01-29T01:13:14.077 回答