본문 바로가기
프로그래밍/스프링프레임워크

도메인 이전시 기존 도메인의 모든 URL을 새 도메인으로 리다이렉트하기

by pentode 2018. 4. 21.

Servlet 을 사용하는경우 도메인 이전시에 기존 도메인의 즐겨찾기 되어 있는것과 같은 어떤 URL에서 접근하더라도 새 도메인으로 리다이렉트하는 방법을 알아봅니다.


사이트 도메인이 변경되면 기존 도메인은 새로운 도메인으로 리다이렉트 되도록 하는게 일반적입니다. 이때 영구 이전을 나타래는 301 HTTP 응답코드를 사용하는게 좋습니다.


이때 보통은 index 페이지에만 리다이렉트 처리를해서 이전 도메인만으로 들어오면 리다이렉트 되지만 사이트내의 특정 페이지들을 즐겨찾기 해두고 사용하던 곳은 페이지를 찾지 못하는 상황이 됩니다.


Servlet 을 사용하는 경우 Filter 를 사용하여 어떤 URL의 요청이 들어오더라도 새 도메인으로 리다이렉트 되도록 만들어 보겠습니다.



1. 요청을 특정 URL로 리다이렉트 시키는 필터를 만듭니다.


- 이 필터가 하는일은 단순히 특정사이트로 리다이렉트 하는 것 뿐입니다.


package com.tistory.pentode;


import java.io.IOException;


import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletResponse;


public class UrlRewriteFilter implements Filter {


    @Override

    public void destroy() {

    }


    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        HttpServletResponse res = (HttpServletResponse)response;

        // HTTP 응답코드 301을 사용하도록 설정하여 리아이렉트합니다.

        res.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

        res.setHeader("Location", "http://pentode.tistory.com");

    }


    @Override

    public void init(FilterConfig arg0) throws ServletException {

    }


}



2. web.xml 파일에 필터를 설정합니다.


<filter>

    <filter-name>rewriteFilter</filter-name>

    <filter-class>com.tistory.pentode.UrlRewriteFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>rewriteFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>


필터의 URL 맵핑을 /* 으로 설정하여 어떤 요청이 들어오더라도 필터가 동작하도록 설정합니다.

반응형