2011-01-21 2 views
2

может у вас рассказать мне, как сделать 301 постоянную переадресацию в asp.net?Как сделать 301 постоянную переадресацию в asp.net

Я написал код в Global.asax файл, но мой веб-клиент говорит, что он не работает,

я написал follwing код в 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

Если вы хотите, чтобы весь сайт для перенаправления почему не перенаправлять IIS? – Shoban

+0

и, пожалуйста, скажите, как проверить, работает ли он или нет? – tina

+0

Если это IIS7, тогда проверьте эту ссылку: http://www.davelawlor.com/iis-7-setup-301-redirect – Shoban

ответ

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"); 
} 
+0

Где я должен написать выше код, на котором page_load, я хочу, чтобы весь сайт перенаправлялся. – tina

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 попытается обработать его самостоятельно, и в этом случае заголовок может существовать, но статус может быть фактически перезаписан между началом ответа и заканчивая его. Это сделает так, что вы не получите фактическую перенаправление.

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(); 
     } 
    } 
Смежные вопросы