搜索了几个小时但没有用,所以这里......
我有一个域名,每天都会收到很多点击,并且有人问我是否可以提供子域名中的静态内容。由于该网站非常广泛且已经编写,我想知道是否有任何方法可以使用URL重写进行更改:
www.example.com/image.gif
到
static.example.com/image.gif
我有一个使用301重定向的解决方案,但据我所知,这是适得其反的,因为每个图像必须进行2次请求。我真的不想通过所有的aspx页面和CSS来对新网址进行硬编码,因为它会导致进一步的问题 - 网站的某些部分仍在开发中,静态内容可能随时发生变化。我尝试使用重写(而不是重定向)来更改网址,但它出现了类似的内容:
http://www.example.com/http://static.example.com/image.gif
你将如何实现这一目标?我可以完全访问dns和服务器(win 2008r2 / IIS 7.5),因此如果网址重写不是答案,可以进行任何更改。
提前致谢
汤姆。
答案 0 :(得分:1)
您可以使用HttpModule完成此操作。以下示例捕获对gif文件的所有请求,并将绝对路径更改为指向承载静态内容的备用站点。在HttpModule中尝试这个方法:
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"));
}
}
有关HttpModule的更多信息,请访问:http://msdn.microsoft.com/en-us/library/ms227673.aspx
我测试了上面的代码 - 它有效。我希望这会有所帮助。