重写子文件夹在web.config中的子域(Rewrite Subfolder to Subdoma

2019-07-18 02:37发布

我试图写的以下情形重写规则。

用户试图加载此图片

domain.com/images/folder/picture.jpg

而是,我需要它负载:

cdn.domain.com/images/folder/picture.jpg.

下面是我有一个不工作:

<rule name="CDN rewrite for Images">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="domain.com" />
        <add input="{REQUEST_URI}" pattern="^/images/folder/(.*)$" />
    </conditions>
    <action type="Rewrite" url="cdn.domain.com/images/folder/{C:1}" />
</rule>

更新:添加额外的信息。 大多数的图片正在从的Joomla担任了如此而域的根是一样的东西domain.com,大多数图像是具有SRC =“/图片/文件夹/ p​​icture.jpg”不太清楚这是怎么影响改写输入,但没有选项下面cheesemacfly的回答,正在...

UPDATE2:虽然cheesemacfly无法帮助我在我的特殊情况下,我为他颁发了奖金和标志着他的答案,作为接受的一个,因为他去超越,试图帮助我在聊天。 希望他的回答会帮助别人与IIS重写。

Answer 1:

编辑:

为了能够重写(而不是只重定向)的网址外部网站,您需要安装应用程序请求路由模块 ,并启用代理模式。

要做到这一点:

  1. 下载并安装该模块
  2. 打开IIS管理控制台( inetmgr
  3. 选择您的服务器节点
  4. 上双击Application Request Routing Cache
  5. 点击Server Proxy SettingsActions面板(屏幕右侧)
  6. 选中该复选框Enable proxy ,然后点击Apply

第二步是建立一个规则。

如果你希望你的重写是基于路径上,然后使用下面的代码:

<rewrite>
  <rules>
    <rule name="Rewrite to cdn domain">
      <match url="^images/folder/(.+)$" />
      <action type="Rewrite" url="http://cdn.domain.com/images/folder/{R:1}" />
    </rule>
   </rules>
</rewrite>

或者,如果你保持相同的文件夹结构的第二个网站,你可以简化为如下的:

<rewrite>
  <rules>
    <rule name="Rewrite to cdn domain">
      <match url="^images/folder/(.+)$" />
      <action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
    </rule>
   </rules>
</rewrite>

如果你想赶上仅具有特定扩展名结尾的文件(比如说图像):

<rewrite>
  <rules>
    <rule name="Forward to cdn domain">
      <match url="^images/folder/.+\.(?:jpg|bmp|gif)$" />
      <action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
    </rule>
  </rules>
</rewrite>

请参考: http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing (“?你应该使用哪个选项 ”一节)

小费:

测试你的模式,最好的办法是使用IIS测试图形工具。

在您的网站的根目录 - > URL重写 - >创建一个空白规则 - >点击测试模式:

如果你没有得到预期的结果,你可以使用调试重写失败请求跟踪工具



Answer 2:

注:更改规则是适当的,而不是一个重写解决问题重定向。 理想情况下,你希望它是一个重定向,但我花了很多时间试图让重写工作,至今还没有解决方案。

<rule name="Rewrite to images.cdn.com" enabled="true" stopProcessing="true">
<match url="images/(.+)$" ignoreCase="true" />
<action type="Redirect" url="http://images.cdn.com/{R:1}" />
</rule>


文章来源: Rewrite Subfolder to Subdomain in web.config