我试图写的以下情形重写规则。
用户试图加载此图片
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 =“/图片/文件夹/ picture.jpg”不太清楚这是怎么影响改写输入,但没有选项下面cheesemacfly的回答,正在...
UPDATE2:虽然cheesemacfly无法帮助我在我的特殊情况下,我为他颁发了奖金和标志着他的答案,作为接受的一个,因为他去超越,试图帮助我在聊天。 希望他的回答会帮助别人与IIS重写。
编辑:
为了能够重写(而不是只重定向)的网址外部网站,您需要安装应用程序请求路由模块 ,并启用代理模式。
要做到这一点:
- 下载并安装该模块
- 打开IIS管理控制台(
inetmgr
) - 选择您的服务器节点
- 上双击
Application Request Routing Cache
: - 点击
Server Proxy Settings
在Actions
面板(屏幕右侧) - 选中该复选框
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重写 - >创建一个空白规则 - >点击测试模式:
如果你没有得到预期的结果,你可以使用调试重写失败请求跟踪工具
注:更改规则是适当的,而不是一个重写解决问题重定向。 理想情况下,你希望它是一个重定向,但我花了很多时间试图让重写工作,至今还没有解决方案。
<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>