안녕하세요? 쓸만한게 없네 윤선식입니다.

일전에 Q&A 게시판에 이러한 문의가 있었는데요.

http://www.sqler.com/355372

막상 제가 필요한 상황에 되어 구현을 해 보았습니다.

보통 도메인이 변경되거나, 통합도메인을 사용할 경우 해당 서버의 루트로 보내버리는 경우가 있는데요,

저는 ASPX 파일과 404 Error(Page 없음 오류)를 이용해 Sub Path QueryString 모두를 보내볼까 합니다.

참고로 Windows 2003 (IIS 6.0) 기준입니다. IIS 7.0 도 대동소이합니다.

# 사전정의

1. URL("도메인)

가. Old URL : www.test.com

나. New URL : www.test.co.kr

2. Old URL 페이지 설정

가. Main Page : Default.aspx

나. 404 Error 처리 Page : 404Error.aspx

# Old Url에 사용할 ASPX소스

1. Default.aspx : IIS에서 해당 페이지를 메인 페이지로 잡습니다.

<%@ PageLanguage="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%

String sServerUrl = "http://www.test.co.kr/";

Response.Redirect(sServerUrl);

%>

2. 404Error.aspx : 404 에러 시 사용할 페이지입니다.

<%@ PageLanguage="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%

//String sFilePath = (Request.FilePath);

String sServerUrl = "www.test.co.kr";

// 보낼 URL

String sQueryString = Server.UrlDecode(Request.QueryString.ToString().ToLower());

// 에러를 포함한 페이지 정보를 쿼리스트링으로 받아서 소문자로 변환, 디코딩을 안해도 동작은 하지만, 주소표시를 알흠답게 하기 위해.

//Response.Write(sQueryString);

//Response.End();

String sServerName = Request.ServerVariables["server_name"].ToLower();

// 서버명 받아오기.

String sServerPort = Request.ServerVariables["server_port"];

// 서버포트를 받음. [ssl 수도 있으므로]

String sHttp = "http";

if (sServerPort == "443") // ssl 경우 https 변환

sHttp = "https";

String sRedirectUrl = sQueryString.Replace("404;" + sHttp + "://" + sServerName + ":" + sServerPort, "");

// 에러메시지에서 URL Path 부분만 뽑아냄.

Response.Redirect(sHttp + "://" + sServerUrl + sRedirectUrl);

// 해당 서버로 Redirection(Path Info QueryString 포함)

%>

# IIS 설정

1. 위에서 설정한 Default.aspx를 기본문서로 설정합니다.

1.jpg

2. 등록정보에서 사용자 지정오류탭을 선택하고, HTTP 404 오류를 선택합니다.

2.jpg

3. 사용자 지정 오류 편집 속성에서 메시지 유형을 “URL”, URL은 위에서 지정한 “/404Error.aspx”로 합니다.

3.jpg

4. 등록정보가 변경된 것을 확인 가능합니다.

4.jpg

이제는 http://www.test.com/sub/DetailPage.aspx?Goods=12546페이지는 자동적으로

http://www.test.co.kr/sub/DetailPage.aspx?Goods=12546으로 Redirect됩니다. ^^

+ Recent posts