2012-09-25 6 views
2

이전 asp.net webforms 사이트를 업그레이드하고 있습니다. URL을 더 멋지게 만들고 싶습니다. 따라서 다음과 같은 라우팅 시스템을 사용하고 있습니다.URL 잘못된 경로에 대한 전달?

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("account settings", 
     "settings/account/", 
     "~/accountsettings.aspx"); 
} 

잘 작동합니다. mydomain.com/settings/account/과 같은 URL은 훨씬 멋지게 보입니다. 그러나 실제 위치 인 mydomain.com/accountsettings.aspx을 사용하여 페이지에 계속 액세스 할 수 있습니다. 이 오래된 양식 URL에 대한 요청을 내 새 URL로 전달하고 싶습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? RegisterRoutes처럼 내가 사용할 수있는 간단한 방법이 있습니까?

+0

특정 방법이 있는지 확실하지 않지만 각 페이지의'Page_Init'에 url에 aspx 확장자가 포함되어 있으면 Response.RedirectToRoute()를 사용하여 올바른 경로로 리디렉션 할 수 있습니다. –

답변

2

난 당신이 라우팅 엔진이 사용 IgnoreRoute 실제 파일의 경로를 무시 알려해야합니다 믿습니다

routes.IgnoreRoute("accountsettings.aspx"); 

제발 한 번 확인 당신이 만약 내가 기억하지 않는 IgnoreRoute의 구문을 상대 경로 또는 파일 이름 만 포함시켜야합니다.

작업을 완료하면 global.asax의 전역 오류 처리기에서 생성되는 404를 트랩하고 요청 된 경로 인 경우 리디렉션 할 수 있습니다. 이 블로그 게시는 글로벌 오류 처리기에 404를 잡는 방법의 예입니다. http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx

공개 사이트이고 검색 엔진 최적화에 관심이있는 경우 http를 사용하여 영구 리디렉션을 지정하는 것이 좋습니다. 상태 코드 301. 이것은 Google 및 다른 검색 엔진에 이전 페이지가 현재 새 위치에 있음을 알리고 해당 페이지에서 가치를 잃지 않습니다.

희망 하시겠습니까?

+0

이 방법은 좋게 들립니다. 나는 1 개의 장소에서 길을 무시하는 것에 관해 그렇게 확실하지 않다, 그 다음 다른 곳에서 404s를 취급한다. 한 번에 모두 할 수있는 방법을 찾아 낼 수 있는지 알게 될 것입니다. – Oliver

관련 문제