on
리다이렉션한 횟수가 너무 많습니다
리다이렉션한 횟수가 너무 많습니다
728x90
devdreamers.kr 의 사이트 리뉴얼 공지를 위해서 모든 url 에 대해 사이트이전 공지 url로 리다이렉트를 시켜려는 과정에서 문제가 발생하였다.
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
반응형
from http://duckracoon.tistory.com/155 by ccl(A) rewrite - 2021-10-15 16:01:04