我需要将所有请求从一个域移动到另一个域。我想更改URL的一部分,比如subdomain.olddomain/url -> subdomain.newdomain/url。
我确信这是小菜一碟,并将Application_Begin请求写成:
void Application_BeginRequest(object sender, EventArgs e)
{
string url = Request.Url.ToString().ToLower();
string from = ConfigurationSettings.AppSettings["from"];
if (url.IndexOf(from) >= 0)
{
url = url.Replace(from, ConfigurationSettings.AppSettings["to"]);
Response.Redirect(url);
}
else
{
if (url.IndexOf("error.aspx") < 0)
{
Response.Redirect("Error.aspx?url=" + Server.UrlEncode(url));
}
}
}到目前为止,我忘记了,BeginRequest只在文件实际存在时启动。
有什么想法吗,我怎样才能在asp.net中做这样的重定向而不创建成百上千的老页面呢?
发布于 2010-08-06 04:47:50
我建议在IIS6中使用像ISAPIRewrite [http://www.isapirewrite.com/]这样的工具来管理它,或者在IIS7中使用内置的URL重写。
没有理由重新发明轮子..。
发布于 2010-08-06 04:35:38
不是100%确定,但我认为如果您取消选中IIS中的Check that file exists选项,它应该可以工作。如何执行此操作取决于IIS版本。
发布于 2010-08-06 04:38:09
我相信你可以指定一个在404错误上运行的ASPX。该页面可以执行重定向。
https://stackoverflow.com/questions/3418936
复制相似问题