IIS的URL重写规则,用于替换每个页面中的文件夹路径

时间:2013-06-21 13:58:07

标签: asp.net iis url-rewriting

我的网站项目中有超过300页。随着时间的推移,我们创建了一个安全的新服务器。此服务器专门用于网站中的所有图像。

所以这是场景:

  • 图像的当前实现(在aspx中,在css中)

    http://www.mysite.com/assets/common/image1.jpg
    
  • 有时候在网页和css中就像这样指定

    ~/assets/common/image1.jpg        
    
  • 想要使用像这样的东西。

    http://www.static.mysite.com/common/image1.jpg
    
  • 和安全页面

    https://www.static.mysite.com/common/image1.jpg
    

因为您可以看到所有图片都来自~/assets文件夹但现在我想创建一个用~/assets替换http://static.mysite.com的规则

如何使用重写规则在IIS中实现此目的。

实施例

ASPX

 <img src="/assets/common/image1.jpg" id="ImageId1" alt="Image" width="100" height="100" />

<img src="http://mysite.com/assets/common/image2.jpg" id="ImageId2" alt="Image" width="100" height="100" />

想要使用IIS规则,当找到上面的代码时,将其替换为http://static.mysite.com/common/image1.jpg

 <img src="http://static.mysite.com/common/image1.jpg" id="ImageId1" alt="Image" width="100" height="100" />


<img src="http://static.mysite.com/common/image2.jpg" id="ImageId2" alt="Image" width="100" height="100" />

3 个答案:

答案 0 :(得分:10)

您需要在IIS中创建出站规则。规则需要遵循:

  1. 前提条件应该只检查html文件(我使用默认的IsHTML)
  2. 在“与内容匹配”中,选择要检查链接的元素
  3. 模式为^(.*)/assets/(.*)
  4. 操作属性为http://static.mysite.com/ {R:2}。 R:2引用上面正则表达式中的second()。单击“测试模式”按钮后,您可以检查所需内容。
  5. 符合上述条件的贝娄简单规则:

    enter image description here

答案 1 :(得分:5)

你可以试试这个

<rule name="assets redirection" stopProcessing="false">
    <match url="^(.*)/(assets)/(.*)" ignoreCase="false" />
    <action type="Redirect" url="{R:1}/{R:3}" />
</rule>

它会将whatever/assets/common/image1.jpg重定向到whatever/common/image1.jpg

更新

<rule name="assets redirection" stopProcessing="false">
    <match url="^(.*)/(assets)/(.*)" ignoreCase="false" />
    <action type="Redirect" url="static.mysite.com/{R:3}" />
</rule>

答案 2 :(得分:2)

嗯,你可以这样做怎么做

string imageUrl= Request.Url.Scheme + "://" + Request.Url.Authority + "/Image/logo/Logo.png";

Scheme是您的网站方案http或https等。 权限是您的网络域名,如果有的话。  然后在这里它完全是你的图像网址。

我已将此徽标网址用于ssrs报告服务并且很好。希望它能为您工作。

欢迎提出意见和质询。 谢谢。