asp.net – 在web.config中将子文件夹重写为子域

前端之家收集整理的这篇文章主要介绍了asp.net – 在web.config中将子文件夹重写为子域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为以下场景编写重写规则.

用户尝试加载此图片

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 =“/ images / folder / picture.jpg”输入的.不太确定这是如何影响重写的,但是下面没有关于cheesemacfly答案的选项正在运作……

更新2:虽然在我的特殊情况下,cheesemacfly无法帮助我,但是我给了他赏金,并将他的答案标记为被接受的答案,因为他超越了我试图帮助我聊天.希望他的回答可以帮助重写IIS的人.

解决方法

编辑:

为了能够将URL重写(并且不仅仅是重定向)到外部网站,您需要安装Application Request Routing module并启用代理模式.

为此:

> Download and install the module
>打开IIS管理控制台(inetmgr)
>选择您的服务器节点
>双击应用程序请求路由缓存:

>单击“操作”窗格(屏幕右侧)上的“服务器代理设置”
>选中启用代理框,然后单击应用

第二步是建立规则.

如果您希望重写基于路径,请使用以下代码

<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测试模式工具.

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

如果没有得到预期的结果,可以使用Failed Request Tracing tool调试重写

原文链接:https://www.f2er.com/aspnet/248143.html

猜你在找的asp.Net相关文章