12분 분량
URL 리디렉션 확인 방법과 리디렉션 체인 읽는 법
TrueURL, curl, 개발자 도구로 URL 리디렉션(리다이렉트)을 단계별로 확인하고, 체인의 모든 홉을 읽고, 루프·긴 체인·301/302 혼용을 고치는 법을 설명합니다.
글 읽기무료 리디렉션 도구
도메인을 입력하면 방문자가 접속할 수 있는 네 가지 경로, 즉 www가 있거나 없는 http와 https를 모두 테스트합니다. 네 가지 모두 한 번의 영구 리디렉션으로 같은 HTTPS 주소에 도착해야 합니다.
Enter 키를 누르면 검사합니다
Cloudflare 엣지는 항상 인증서를 검증하므로 이 옵션으로 검증을 건너뛸 수는 없습니다. 인증서 문제는 결과에 표시됩니다.
첫 번째 요청과 함께 최대 16 KB까지 전송됩니다. Content-Type 헤더를 직접 지정하지 않으면 JSON 본문은 application/json으로, 그 밖의 본문은 폼 데이터로 전송됩니다.
1~50 사이로 지정합니다. 브라우저는 리디렉션 20회 후 멈춥니다.
사이트에 따라 휴대폰, 크롤러, 링크 미리보기 봇을 각기 다른 곳으로 리디렉션할 수 있습니다.
체인의 모든 요청에 함께 전송됩니다.
사용자 지정 헤더가 없습니다.
이 헤더를 전송하려면 값을 입력하세요. 헤더 값은 저장되지 않습니다.
HTML 페이지에 있는 <meta http-equiv="refresh"> 태그와 Refresh 헤더를 따라갑니다.
페이지 스크립트에 있는 location.href = "…"처럼 단순하고 조건 없는 리디렉션을 따라갑니다.
설정은 이 브라우저에 저장됩니다. 쿠키, 헤더 값, POST 본문은 저장되지 않습니다.
TrueURL은 입력한 호스트로 네 가지 시작 URL을 만들어 각각 추적합니다.
http://example.comhttp://www.example.comhttps://example.comhttps://www.example.com올바르게 설정되어 있다면 네 가지 모두 하나의 표준 HTTPS URL에서 끝납니다. 그 버전은 바로 200 OK로 응답하고, 나머지 세 버전은 한 번의 301 또는 308로 그 URL에 도달합니다. HTTPS에서 HTTP로 되돌아가는 홉은 경고로 표시됩니다.
TrueURL은 HSTS도 검사합니다. 최종 HTTPS 응답(보통 표준 URL)에서 Strict-Transport-Security 헤더를 읽어 헤더 값 원문, max-age, 그리고 includeSubDomains와 preload 설정 여부를 보여 줍니다. max-age가 1년 이상이면 통과입니다. max-age가 그보다 짧거나 max-age=0인 경우, 유효한 max-age가 없는 헤더, 헤더가 아예 없는 경우는 경고로 표시됩니다.
http://example.com에서 https://example.com을 거쳐 https://www.example.com으로 이동하는 경우입니다. 스킴 규칙과 호스트 규칙을 합쳐 모든 버전이 최종 URL로 바로 이동하게 하세요(단, 아래의 HSTS 프리로드 예외 참고).www)이 인증서에 포함되어 있지 않습니다. Cloudflare 엣지는 항상 인증서를 검증하므로 해당 버전에는 리디렉션 대신 TLS 오류가 표시됩니다.www와 non-www가 서로 다른 URL에서 끝나 신호가 두 호스트로 나뉩니다.HSTS(Strict-Transport-Security)는 브라우저가 HTTP로 먼저 요청하지 않고 해당 도메인에 자동으로 HTTPS를 사용하도록 지시합니다. 일반적인 헤더는 Strict-Transport-Security: max-age=31536000; includeSubDomains입니다. 브라우저는 이 헤더를 HTTPS 응답에서만 받아들이고 일반 HTTP 응답에서는 무시합니다.
hstspreload.org에서 브라우저의 HSTS 프리로드 목록에 도메인을 등록하려면 HTTP에서 시작하는 첫 번째 홉이 같은 호스트에 머물러야 합니다. 즉 http://example.com에서 https://example.com으로 이동한 다음에야 https://www.example.com으로 가야 합니다. 이 두 홉짜리 체인은 단일 홉 원칙의 허용되는 예외입니다. 이때 헤더에는 1년 이상의 max-age, includeSubDomains, preload가 있어야 하며, HTTPS 리디렉션 응답 자체에도 이 헤더를 보내야 합니다.
12분 분량
TrueURL, curl, 개발자 도구로 URL 리디렉션(리다이렉트)을 단계별로 확인하고, 체인의 모든 홉을 읽고, 루프·긴 체인·301/302 혼용을 고치는 법을 설명합니다.
글 읽기13분 분량
3xx 상태 코드의 의미와 301·302·303·307·308의 영구 여부, 메서드 유지, 캐싱, SEO 차이를 비교하고 nginx·Apache·PHP 예제를 제공합니다.
글 읽기위에 도메인을 입력하세요. TrueURL이 www가 있는 버전과 없는 버전의 http://와 https://를 요청하고, 각각 어디에 도착하는지, 어떤 상태 코드가 사용되었는지, 몇 개의 홉을 거쳤는지 보여 줍니다. 네 가지 모두 같은 HTTPS URL에 도달하고 모든 리디렉션이 영구 리디렉션이라면 올바르게 설정된 것입니다.
SEO 측면에서는 어느 쪽이든 괜찮습니다. 중요한 것은 하나를 선택하고, 다른 쪽을 301로 그쪽에 리디렉션하며, 링크, canonical 태그, 사이트맵에서 일관되게 사용하는 것입니다. DNS는 루트 도메인에 CNAME 레코드를 허용하지 않으므로(일부 DNS 제공업체는 우회 방법을 제공합니다) www 호스트가 CDN에 연결하기 더 쉬울 수 있지만, 이는 기술적인 선택일 뿐 순위 요소는 아닙니다.
이 “307 Internal Redirect”는 사이트가 HSTS 목록에 있어서 Chrome이 자체적으로 만든 것이며, HTTP로는 요청이 아예 전송되지 않았습니다. 서버의 실제 리디렉션은 301이거나 전혀 다른 것일 수 있습니다. TrueURL에는 HSTS 캐시가 없으므로 항상 서버의 실제 응답을 보여 줍니다.
작은 문제입니다. 방문자는 결국 HTTPS에 도착하지만, 임시 리디렉션은 HTTP URL이 다시 돌아올 수 있다고 검색엔진에 알리므로 전환이 늦어지거나 혼선이 생길 수 있습니다. 301이나 308로 바꾸세요.
위에 도메인을 입력하고 결과의 HSTS 헤더 항목을 확인하세요. TrueURL은 최종 HTTPS 응답에서 Strict-Transport-Security 헤더를 읽어 그 값과 max-age(1년 미만이면 경고), 그리고 includeSubDomains와 preload 설정 여부를 보여 줍니다. 이 헤더가 없으면 도메인을 직접 입력하거나 예전 http:// 링크로 시작하는 모든 방문이 암호화되지 않은 요청으로 시작되며, 같은 네트워크에 있는 누군가가 이를 가로챌 수 있습니다. 헤더가 있으면 이를 한 번 받은 브라우저는 다음부터 바로 HTTPS로 접속합니다. 처음에는 짧은 max-age로 시작하고, includeSubDomains를 추가하기 전에 모든 하위 도메인이 HTTPS로 작동하는지 확인한 다음, 값을 1년 이상으로 늘리세요.
문제는 확인할 수 있지만 그 너머는 볼 수 없습니다. Cloudflare 엣지에서는 SSL 오류 무시를 켜도 인증서 검증을 끌 수 없으므로, 해당 버전은 그 홉에서 TLS 오류를 표시합니다. 대개는 그것이 바로 알아야 할 정보입니다. 브라우저도 그 지점에서 방문자에게 경고를 표시하기 때문입니다.
모든 URL을 리디렉션해야 합니다. 사이트 전체 규칙은 http://example.com/any/path?query를 HTTPS의 같은 경로와 쿼리로 보내야 합니다. 하위 페이지 URL 몇 개는 리디렉션 체인 검사로, 여러 개는 리디렉션 일괄 검사로 한 번에 테스트하세요.