리다이렉션한 횟수가 너무 많습니다
웹 프로그래밍

리다이렉션한 횟수가 너무 많습니다

728x90
반응형

devdreamers.kr 의 사이트 리뉴얼 공지를 위해서 모든 url 에 대해 사이트이전 공지 url로 리다이렉트를 시켜려는 과정에서 문제가 발생하였다.

 

꿈꾸는 개발자들

팀을 찾거나 모으기 힘들 때 꿈꾸는 개발자들

devdreamers.kr

django middleware에서 처리를 하려했고 아래와 같이 처리하려했었다.

class RedirectMiddleware:
	def __init__(self, get_response): 
		self.get_response = get_response 

	def __call__(self, request): 
		response = self.get_response(request) 
		if request.environ['PATH_INFO'].startswith('/'): 
			return redirect('settings.NOTE_URL') 
		return response

 무지성으로 모든 url이니까 '/'에 대해서 /note/로 이동시키면 되겠지?하는 생각이었다.

 

'리다이렉션한 횟수가 너무 많습니다' 이 에러는 서버에서 링크이동이 반복적으로 일어날때 브라우저에서 임의로 만들어내는 에러이다. 즉 링크이동이 무한루프를 돌고 있다는 거다.

당연하게도 /note/도 '/'에 포함되기 때문이었다. '/note/'와 '/'가 반복해 서로 링크를 이동시키는 바람에 발생한 에러이다.

 

class NoteMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)

        if not request.environ['PATH_INFO'] == "/note/":
            return HttpResponseRedirect(settings.NOTE_URL)
        return response

해결하였다.

 

728x90
반응형