6

나는 모든 것을 탐내 봤고, 나는 여러 가지 다른 반응을 읽었습니다. 어떤 것은 성공하지 못하게하려고했습니다. 저는 전문 프로그래머가 아니지만 jquery에서 doctypes에 이르기까지 모든 것에 대해 저에게 많은 것을 가르쳐 준이 포럼의 사람들에게 감사드립니다.asp.net에서 301 리디렉션하는 것이 더 좋은 방법은 무엇입니까?

나는 VWD 2010 Express에서 개발 된 웹 사이트를 운영하고 있습니다. 난 그냥 2 가지 알고 싶어 :/I는 검색 엔진에 대한 나쁜 알고

  1. 컨텐츠 사용자 도메인 한 수를 복제 www.yourdomain 모두, 그래서 나는 301 리디렉션을 설정하려는 최종 사용자의 경우 있도록 유형이 mydomain에 있으면 자동으로 www.mydomain (www가있는)으로 리디렉션됩니다.

  2. 루트가 아니라 폴더에있는 일부 페이지를 이동했습니다. 따라서 오래된 페이지를 새 위치로 대체하려고합니다. www.mydomain/서비스 /engineering.aspx에서 www.mydomain/products /engineering.aspx로 자동 리디렉션하여이 작업을 수행하고 싶습니다.

이것은 어렵습니까? .htaccess 또는 web.config 또는 다른 것을 사용하려면 (권장)입니까?

시간을내어 읽어 주셔서 감사 드리며 모든 의견에 진심으로 감사드립니다.

제이슨 웨버

답변

7

내가 오해 한 않는 .htacess는 아파치이며 ASP.Net 코딩하는 경우는 거의 확실하게 IIS를 사용하고 있습니다. 연구에서 .htaccess 자료를 무시하십시오.

리디렉션에 URL Rewriter를 사용할 수는 있지만 매우 복잡 할 수 있습니다. 내가 당신이라면 나는 당신이 Global.asax에 비슷한 할 수있는 당신의 정식 리디렉션 (www가 비 WWW)의 경우

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Status = "301 Moved Permanently"; 
    Response.AddHeader("Location","http://www.domainname.com/new-page.aspx"); 
} 

즉 Page_Load 이벤트에 301 리디렉션을 가능한 한 간단하게 유지하고 기존 페이지를 할 것 이해하기 쉽다는 이점이있다 - Application_BeginRequest에서 파일

이 어쨌든 할 것 인 것이다 (이것은 내 코드가 here에서 온되지 않습니다)

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
     Request.Url.ToString().ToLower().Replace( 
      "http://mysite.com", 
      "http://www.mysite.com")); 
} 

즉, 비 www가 변형을 감지 너를 길에서 멀어지게하지 마라. 이상한 웹 서버 설정으로 어떤 블랙 박스를 찾는 경우가 있습니다.

+0

우수한 정보, 크랩 - 많이 감사합니다! Windows 서버를 사용하고 있기 때문에 .htaccess/apache 항목을 인식하지 못해서 꽤 바보 같아 보입니다. 정보와 링크는 훌륭합니다. 내 상황에 대한 완벽한 조언. 이러한 리디렉션은 구현하기가 너무 어려워서는 안됩니다. 시간 내 주셔서 다시 한 번 감사드립니다! –

+0

@JasonWeber 전혀 문제 없습니다. 행운을 빕니다. –

6

VWD 2010 Express를 사용하고 있으므로 Response.RedirectPermanent (stringURL) .NET4 메서드를 사용하면 도움이됩니다. HttpResponse 객체의 일부입니다. 여기에 해당

더 많은 문서 : Response.Redirect를 같이했다 같은 http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

이 기능은() 그러나 그것은 리디렉션을 수행과 함께 클라이언트에 301 코드를 발행합니다.

+0

완벽하고 쉬운 방법이었습니다. 답장과 링크에 감사드립니다. 카일! –

+0

그리고 네, 저는 .net4.0 프레임 워크를 사용 중이므로 완벽한 솔루션이었습니다. –

-1

하면

string url = "newpage.aspx"; 
     Response.Clear(); 
     Response.StatusCode = 301; 
     Response.RedirectLocation = url.ToLower(); 
     Response.End(); 

그런 다음 크롬에서 검사 도구를 사용하여 상태 코드를보고 "네트워크"탭을 확인

(301)를 통해 리디렉션 할 경우이 작업을 수행합니다. 그것은 나를 위해 작동합니다.

관련 문제