클라우드플래어 301 리디렉션 – 동적 url 리디렉션 가이드
인터넷은 계속해서 진화하고 있으며, 웹사이트도 마찬가지입니다. URL 리디렉션은 이러한 변화에 맞춰 방문자들을 올바른 페이지로 안내하는 중요한 역할을 합니다. 특히 동적 URL 리디렉션은 단순히 URL을 바꾸는 것 이상의 기능을 제공합니다. 이제 방문자의 언어나 국가에 따라 더 스마트하게 리디렉션할 수 있게 되었습니다.
301 리디렉션은 영구적인 URL 이동을 의미하는데, 이는 검색 엔진에게도 새로운 URL을 알려주는 중요한 신호입니다. 동적 리디렉션을 통해 방문자는 항상 최신 정보를 받을 수 있으며, 웹사이트는 보다 유연하고 사용자 친화적으로 변모하게 됩니다.
판촉넷이나 애플 렌탈 같은 분양몰을 운영하게 되면서 느낀 점은 총판에서 개발자가 정말 존재하는지가 궁금했으며, 개발자와의 직접 통화가 너무 어렵다는 것을 느꼈습니다.(개인적으로는 개발자는 없고, 외주를 주는 것으로 판단됩니다.)
판촉넷 같은 경우는 몇 년을 운영했지만, 여직원과 통화를 해본 것이 전부입니다. 그만큼 소통이 어렵다는 것입니다.

URL 리디렉션은 인터넷의 한 위치에서 다른 위치로 매핑을 하는 것으로, 방문자의 브라우저에게 페이지의 위치가 변경되었으며, 새로운 위치를 알려주는 가상 ‘링크’를 제공합니다.
URL 리디렉션은 보통 Cloudflare의 페이지 규칙으로 구현되었으나, 페이지 규칙은 방문자의 출신 국가나 선호 언어와 같은 요소가 아닌 URL에만 매칭되기 때문에 제한적입니다. 이러한 제한으로 인해 더 동적인 URL 리디렉션이 필요한 고객들은 Cloudflare Workers와 같은 대안을 사용해야 했습니다.
이러한 복잡한 사용 사례 관리를 단순화하기 위해 우리는 동적 리디렉션을 만들었습니다. 동적 리디렉션을 통해 사용자는 단 한 줄의 코드도 작성하지 않고 방문자의 출신 국가나 언어와 같은 수백 가지 옵션에 따라 다른 웹페이지나 웹사이트로 방문자를 리디렉션할 수 있습니다.
클라우드플래어 301 리디렉션 왜 필요할까?
9년 동안 사용자들은 하나의 영역(zone)당 125개의 URL 리디렉션으로 제한되었습니다. 이 제한으로 인해 더 많은 URL 리디렉션이 필요한 사용자들은 Cloudflare Workers와 같은 대안을 사용해야 했습니다.
2021년 12월, 우리는 계정당 최대 100,000개의 URL 리디렉션을 허용하는 Bulk Redirects를 출시했습니다. 2022년 4월에는 이 최대 수를 600만 개 이상으로 늘렸습니다. 그러나 ‘URL 리디렉션’ 제품에는 여전히 충족되지 않은 부분이 있었습니다. 지금까지는 말이죠.
Bulk Redirects는 ‘Forwarding URL’ 페이지 규칙과 마찬가지로 규정된 URL 리디렉션입니다. 우리가 어떤 URL을 찾아야 하는지, 방문자가 방문할 때 어디로 리디렉션해야 하는지 알려줍니다. 이 사용 사례는 대규모로 지원할 수 있습니다.
예시
방문자가 https://www.cloudflare.com/r2-storage를 요청하면 https://www.cloudflare.com/products/r2로 리디렉션합니다. 방문자가 https://www.cloudflare.com/apishield를 요청하면 https://www.cloudflare.com/products/api-gateway로 리디렉션합니다. 방문자가 https://www.cloudflare.com/welcome-center를 요청하면 https://developers.cloudflare.com/fundamentals/get-started/로 리디렉션합니다.
이것은 이해하기 쉬운 개념이지만, 사용자 요구는 진화하고 있습니다. 사용자가 방문자의 선호 언어에 따라 요청된 페이지의 로컬 버전으로 리디렉션하고 싶다면 어떻게 될까요? 사용자가 웹사이트의 로컬 자회사로 방문자를 리디렉션하고 싶다면? 또는 모바일 기기에서 방문할 때 최적화된 사이트로 리디렉션하고 싶다면? 이 잘 이해된 개념은 갑자기 작동하지 않게 되며, 일반적인 문제를 해결하기 위해 Workers에서 코드를 배포해야 합니다. 일반적인 문제는 제품화되어야 합니다.
동적 리디렉션의 도움
새로운 제품은 Transform Rules, Custom Rules, Bulk Redirects 등과 동일한 일관된 사용자 인터페이스를 제공하며, Transform Rules에서 제공하는 동적 재작성 작업과 유사한 방식으로 타겟 URL을 동적으로 생성할 수 있는 새로운 작업을 제공합니다.
이 동적 작업은 사용자가 타겟 URL이 어떻게 생겨야 하는지를 명시적으로 정의하는 것에서 벗어나, 요청의 매개변수를 기반으로 타겟 URL을 맞춤 생성할 수 있는 다양한 필드와 기능을 제공합니다. 예를 들어, www.example.com/shop의 모든 트래픽을 www.example.com/en/shop으로 리디렉션하는 대신, www.example.com/{PREFERRED_LANGUAGE}/shop으로 개념적으로 리디렉션할 수 있습니다(실제 구문은 아님!). 이를 통해 선호 언어가 프랑스어인 브라우저의 트래픽은 www.example.com/fr/shop으로, 독일어인 경우 www.example.com/de/shop으로 리디렉션됩니다.
동적 리디렉션과 페이지 규칙의 또 다른 큰 차이점은 필터링에 있습니다. 페이지 규칙은 URL 또는 URL에 와일드카드(*)를 사용하여 필터링하는 데 제한됩니다. 동적 리디렉션은 Transform Rules, Custom Rules(WAF), Bulk Redirects, API Shield와 같은 제품을 실행하는 고속 Rulesets Engine 위에 구축되었습니다.
이로 인해 동적 리디렉션은 필터링에 사용할 수 있는 거의 모든 Ruleset Engine 필드를 제공합니다. 전체 URL을 위한 http.request.full_uri에서 방문자의 위치를 나타내는 ip.geoip.country, 방문자가 선호하는 언어를 나타내는 http.request.accepted_languages[]까지 다양합니다. 가능성은 무궁무진합니다.
또한 이제 논리 연산자 ‘OR’을 사용할 수 있습니다. 이전에는 다섯 개의 서로 다른 URL을 동일한 URL로 리디렉션하려면 다섯 개의 페이지 규칙을 배포해야 했지만, 이제는 ‘OR’을 사용하여 이 사용 사례를 하나의 동적 리디렉션 규칙으로 통합할 수 있습니다.
예시
# | URL | Destination URL |
---|---|---|
1 | https://www.cloudflare.com/partners/integrations/ | www.cloudflare.com/partners/ |
2 | https://www.cloudflare.com/partners/become-a-partner/ | www.cloudflare.com/partners/ |
3 | https://www.cloudflare.com/partners/digital-agency/ | www.cloudflare.com/partners/ |
4 | https://www.cloudflare.com/partners/technology-integrator/ | www.cloudflare.com/partners/ |
5 | https://www.cloudflare.com/partners/view-partners/ | www.cloudflare.com/partners/ |
# | Expression | Destination URL |
---|---|---|
1 | (http.request.full_uri eq “https://www.cloudflare.com/partners/integrations/“) or (http.request.full_uri eq “https://www.cloudflare.com/partners/become-a-partner/“) or (http.request.full_uri eq “https://www.cloudflare.com/partners/digital-agency/“) or (http.request.full_uri eq “https://www.cloudflare.com/partners/technology-integrator/“) or (http.request.full_uri eq “https://www.cloudflare.com/partners/view-partners/“) | www.cloudflare.com/partners/ |
향후 우리는 호스트 이름 목록을 추가하여 사용자가 URL을 목록에 추가하고 규칙 표현식 내에서 참조할 수 있도록 이 사용 사례를 더욱 단순화할 수 있습니다. 예를 들어 (http.request.full_uri in $vanity_urls)와 같은 표현이 가능합니다.
전용 쿼터, 오직 URL을 위해
페이지 규칙은 구성 및 캐싱 동작 설정, 헤더 수정 및 URL 리디렉션(Forwarding URL) 설정에 사용됩니다. 이로 인해 사용자는 사용 가능한 규칙이 빨리 소진되는 경향이 있습니다.
이를 해결하기 위해 오늘 발표된 네 가지 새로운 제품 각각에 대해 페이지 규칙 쿼터와 일치하는 수의 규칙을 제공합니다. 즉, 페이지 규칙에서 엔터프라이즈 고객이 언급된 기능을 공유하기 위해 125개의 페이지 규칙을 얻는다면, 동적 리디렉션에서는 리디렉션을 위해 125개의 규칙을 얻습니다. 이 수는 엔터프라이즈 고객에게는 증가될 수 있습니다.
또한 무료 플랜에 대한 쿼터도 증가시키고 있습니다. 현재 무료 플랜은 세 개의 페이지 규칙을 제공하지만, 이제는 동적 리디렉션을 위해 10개의 규칙을 제공하며, 다른 세 가지 제품(cache, origin, config rules) 각각에도 동일한 수의 규칙을 제공합니다. 이는 37개의 추가 규칙의 순 증가입니다.
Plan | Page Rules | Dynamic Redirects |
---|---|---|
Enterprise | 125 | 125+ |
Business | 50 | 50 |
Pro | 20 | 25 |
Free | 3 | 10 |
사용자는 이제 Cloudflare 설정에서 더 많은 것을 활용할 수 있으며, 트래픽이 리디렉션될 때 더 구체적일 수 있고, 캐시를 최적화하며, 규칙 쿼터의 제한으로 인해 이러한 영역 간의 타협 없이 설정을 조정할 수 있습니다.
로컬화된 리디렉션
앞서 언급한 예시 중 하나는 방문자의 선호 언어에 따라 로컬화된 콘텐츠로 방문자를 리디렉션하는 것입니다.
이는 브라우저에서 보내는 ‘Accept-Language’ 헤더를 분석하여 수행할 수 있으며, 이 헤더는 http.request.accepted_languages[] 필드에 배열로 저장됩니다. 이 필드는 방문자가 웹 브라우저의 ‘언어’ 섹션에서 설정한 선호도에 따라 내림차순으로 정렬된 값의 배열입니다.
예를 들어, 방문자의 브라우저가 “Accept-Language: fr-CH, fr;q=0.8, en;q=0.9, de;q=0.7, *;q=0.5″를 포함한 ‘Accept-Language’ 헤더를 보낸다면, 필드 http.request.accepted_languages[0]에는 “en”이 포함되고, http.request.accepted_languages[1]에는 “fr”이 포함됩니다.
이 정보를 사용하여 다음과 같은 동적 리디렉션을 생성할 수 있습니다:
이 규칙이 설정되면, 선호 언어가 영어(en)인 방문자의 트래픽은 www.example.com/en/shop으로 리디렉션됩니다. 이 규칙은 다른 언어에도 복제할 수 있어, 선호 언어가 프랑스어(fr)인 경우 www.example.com/fr/shop으로 리디렉션됩니다.