我在Global.asax文件中编写了代码,但我的网络客户端说它无法正常工作,
我在Global.asax文件中写了以下代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
{
HttpContext.Current.Response.Status =
"301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location",
Request.Url.ToString().ToLower().Replace(
"http://lsatfreedom.com",
"http://www.lsatfreedom.com"));
}
}
有用吗? 请帮忙。
由于
答案 0 :(得分:2)
首先尝试查看此重定向是否适用于页面加载。 如果是,则使用Begin_Request进行尝试。
希望这能为您提供一些线索:
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
答案 1 :(得分:2)
我认为您遗失了Response.Clear()
和Response.End()
,请尝试使用此功能。
例如:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
{
string sNewPage = Request.Url.ToString().ToLower().Replace(
"http://lsatfreedom.com",
"http://www.lsatfreedom.com");
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", sNewPage);
Response.End();
}
}
答案 2 :(得分:1)
我相信你错过了CompleteRequest()
所以你的代码应该是这样的:
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
{
HttpContext.Current.Response.Status =
"301 Moved Permanently";
HttpContext.Current.Response.AddHeader("Location",
Request.Url.ToString().ToLower().Replace(
"http://lsatfreedom.com",
"http://www.lsatfreedom.com"));
CompleteRequest();
}
如果你没有添加CompleteRequest,那么ASP.Net将尝试自己处理它,在这种情况下标题可能存在,但在开始响应和结束它之间实际上可能会覆盖Status。这样做会使您无法获得实际的重定向。
答案 3 :(得分:1)
我会更改web.config并从此答案中添加以下规则。
Forwarding http://mydomain.com/ctrlr/act/val to http://WWW.mydomain.com/ctrlr/act/val
这就是我们添加www
的方式