Gre*_*egD 8 asp.net subdomain iis-7 web-config url-rewrite-module
我正在尝试为以下场景编写重写规则.
用户尝试加载此图片:
domain.com/images/folder/picture.jpg
Run Code Online (Sandbox Code Playgroud)
而我需要它加载:
cdn.domain.com/images/folder/picture.jpg.
Run Code Online (Sandbox Code Playgroud)
这是我的工作不起作用:
<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>
Run Code Online (Sandbox Code Playgroud)
更新: 添加其他信息.大多数图片都是从Joomla提供的,所以虽然域的根类似于domain.com,但大多数图像都是用src ="/ images/folder/picture.jpg"输入的.不太确定这是如何影响重写的,但是,下面关于cheesemacfly的答案的选项都没有...
更新2: 虽然在我的特殊情况下,cheesemacfly无法帮助我,但我给了他赏金,并将他的答案标记为被接受的答案,因为他超越了我试图帮助我聊天.希望他的回答可以帮助重写IIS的人.
编辑:
为了能够将URL重写(并且不仅仅是重定向)到外部网站,您需要安装应用程序请求路由模块并启用代理模式.
为此:
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>
Run Code Online (Sandbox Code Playgroud)
或者,如果您在第二个网站上保留相同的文件夹架构,则可以简化如下:
<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>
Run Code Online (Sandbox Code Playgroud)
如果你只想捕获以特定扩展名结尾的文件(比方说图像):
<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>
Run Code Online (Sandbox Code Playgroud)
请参阅:http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing(" 您应该使用哪个选项? "部分)
小费:
测试模式的最佳方法是使用IIS测试模式工具.
在您网站的根目录 - > URL重写 - >创建空白规则 - >单击测试模式:

如果未获得预期结果,则可以使用" 失败请求跟踪"工具调试重写
| 归档时间: |
|
| 查看次数: |
14939 次 |
| 最近记录: |