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
반응형
'웹 프로그래밍' 카테고리의 다른 글
[django] 다음글 or 이전글로 넘어가기 구현 (5) | 2021.10.19 |
---|---|
[Django Error] circular dependency (0) | 2021.10.18 |
AWS Load Balancer에서 HTTP서 HTTPS Redirect (0) | 2021.09.11 |
(Error) HTTPS/SSL 적용 (Let's encrypt) - 2 , nginx (1) | 2021.09.07 |
DNS의 개념 (feat. Route53 왜 쓰는가) (1) | 2021.09.04 |