2014-10-27 129 views
0

我在ASP.NET开发,有这个文件夹结构serveral的应用:URL重写IIS的static.example.com

WWW 
-> IMG 
-> CSS 
-> JS 
-> ASPX 

因此,例如:

www1.example.com/IMG/file.png 

我的目标是将所有传入的请求重写为IMG,CSS和JS的子域。 这样:

www1.example.com/IMG/file.png 

或者

www2.example.com/IMG/file.png 

将成为:

static.example.com/IMG/file.png 

他们应该在自己的网站上使用自己的文件夹。它应该通过static.example.com进行路由。我知道我可以使用Apache,但我目前还没有使用IIS的经验。

这在技术上如何可能?我有我的IIS 7.5的全部权利。有几个应用程序具有相同的结构,我想使用每个IMG,CSS和JS文件夹。我有一个性能提升?

编辑:2014年10月28日

希望它得到与此图像更清晰一点。感谢您的回答,它帮助了我很多!所以我可以将我的URL重写为“static.server.com”,现在我想要来自正确来源的图像,可以是www1.server.com/img/abc.png或www2.server.com/img/abc。 PNG。静态网站不应该有一个真正的路径,它应该只是一个空白的网站,监听主机标题或发布/获取从正确的来源提供图像,CSS和JavaScript。 enter image description here

由于提前,

丹尼尔

回答

1

在本question可以使用HTTP模块提及。因此,您可以使用相同问题的代码并将其修改为您的要求。

private void Application_BeginRequest(Object source, EventArgs e) 
{ 
    // Create HttpApplication and HttpContext objects to access 
    // request and response properties. 
    HttpApplication application = (HttpApplication)source; 
    HttpContext context = application.Context; 
    string filePath = context.Request.FilePath; 
    string fullPath = context.Request.Url.AbsoluteUri; 
    string fileExtension = VirtualPathUtility.GetExtension(filePath); 
    if (fileExtension.Equals(".gif")) 
    { 
     context.Response.ContentType = "image/gif"; 
     context.Response.Redirect(fullPath.Replace("www.example.com", "static.example.com")); 
    } 
} 

更新

你可以有这样的事情在你的web.config文件

<rewrite> 
    <rules> 
     <rule name="Forward to static file server"> 
      <match url="^.+\.(?:jpg|bmp|gif)$" /> 
      <action type="Rewrite" url="http://static_file_server/{R:0}" /> 
     </rule> 
    </rules> 
</rewrite> 

更多信息here

+0

是否也可以这样做所以通过Web.conf?我不想在代码方面这样做,因为它应该是可以运行的,并且也可以作为独立软件运行。 – webprogrammer 2014-10-27 14:33:47

+0

查看我的更新回答 – Izzy 2014-10-27 14:47:31

+0

查看我更新的问题 – webprogrammer 2014-10-28 09:56:39

0

恕我直言,我不知道你的实际用例是(或可能误解了你的问题n),所以这是一个“简单/ r”选项:

  • DNS(你将需要这个无论)和;
  • 是的,主机头如果你是共享IP地址。

没有模块/重定向,而这样的 - 这恕我直言应该已经是您要添加的迹象:

  • 更多的请求(重定向)
  • 添加更多的应用程序做(HTTP模块该检查每个要求)

H个...

+0

查看我更新的问题 – webprogrammer 2014-10-28 09:56:57

+0

sry回复这么晚... 我的用例是我有多个应用程序使用相同的CSS,JS和图像。我想分享这些文件与子域的好处,以提高性能。 – webprogrammer 2015-03-03 14:19:04