TrueURL
TrueURL

메뉴

무료 리디렉션 도구

Meta Refresh 검사

모든 리디렉션이 HTTP 상태 코드로 이루어지는 것은 아닙니다. TrueURL은 체인에 있는 각 페이지의 HTML을 읽어 meta refresh 태그와 JavaScript 리디렉션을 찾고, 대상 URL과 대기 시간을 함께 보여 줍니다.

meta refresh 리디렉션이란?

meta refresh(메타 새로고침)는 지정한 시간(초)이 지난 뒤 브라우저가 다른 URL을 불러오도록 지시하는 HTML 태그입니다.

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

대기 시간이 0이면 일반 리디렉션처럼 동작합니다. 대기 시간이 더 길면 예전의 “잠시 후 이동합니다” 페이지처럼 방문자에게 먼저 페이지가 보입니다. JavaScript 리디렉션은 location.href = '...' 또는 location.replace('...') 같은 코드로 같은 역할을 합니다. 둘 다 클라이언트 측 리디렉션으로, 서버는 200 OK로 응답하고 리디렉션은 브라우저가 수행합니다.

TrueURL이 클라이언트 측 리디렉션을 감지하는 방법

TrueURL은 상태가 2xx인 모든 HTML 응답에서 페이지의 처음 256 KB를 읽어 meta refresh 태그와 조건 없는 간단한 JavaScript 리디렉션을 찾습니다. meta refresh처럼 작동하는 Refresh HTTP 헤더도 감지합니다. 리디렉션을 찾으면 태그나 스크립트 코드 조각, 해석된 대상 URL, 대기 시간을 보여 주고, 해당 홉에 meta refresh 또는 JavaScript 라벨을 붙인 뒤 대상 URL부터 체인을 이어 갑니다. 같은 페이지를 새로고침하기만 하는 refresh는 리디렉션이 아니므로 무시합니다.

페이지 자체를 살펴보려면 고급 설정에서 두 유형 각각에 대해 따라가기를 끌 수 있습니다. TrueURL은 JavaScript를 실행하지 않습니다. 페이지 안의 스크립트를 읽어, 페이지가 로드될 때 즉시 또는 최상위 setTimeout 안에서 항상 실행되는 고정 URL로의 리디렉션을 인식합니다. 클릭, 동의 선택, 화면 크기 같은 조건에 따라 실행되거나 코드에서 대상 URL을 조합하는 리디렉션은 감지하지 못합니다. HEAD 응답에는 분석할 본문이 없으므로 HEAD 대신 GET을 사용하세요.

검색엔진이 클라이언트 측 리디렉션을 처리하는 방식

  • 즉시 meta refresh(대기 시간 0): Google은 301처럼 영구 리디렉션으로 처리합니다.
  • 지연 meta refresh: 임시 리디렉션으로 처리되므로 원래 URL이 색인에 남는 경향이 있습니다.
  • JavaScript 리디렉션: Google은 페이지를 렌더링한 뒤에야 이를 인식하며, 렌더링은 크롤링보다 한참 뒤에 이루어질 수 있습니다. 다른 크롤러 상당수와 대부분의 링크 미리보기 봇은 JavaScript를 전혀 실행하지 않습니다.

Google은 설정할 수 있는 곳이라면 어디서든 서버 측 리디렉션을 사용하고, 301을 보낼 수 없는 정적 호스팅처럼 그럴 수 없는 경우에는 meta refresh를 대안으로 쓰라고 권장합니다.

접근성과 사용자 경험

시간 지연 리디렉션은 접근성 문제를 일으킵니다. 스크린 리더 사용자나 글을 천천히 읽는 사람은 페이지가 예고 없이 바뀌면 읽던 위치를 잃게 됩니다. WCAG는 시간 지연 meta refresh를 실패 사례(F40)로, 대기 시간 0의 즉시 리디렉션을 허용되는 기법(H76)으로 분류합니다.

HTML로 리디렉션해야 한다면 대기 시간을 0으로 하고, 새 URL을 가리키는 canonical 태그를 추가하고, 브라우저가 refresh를 따르지 않는 방문자를 위해 새 URL로 가는 링크를 페이지에 눈에 띄게 넣으세요.

가이드

자주 묻는 질문

meta refresh도 301처럼 SEO 가치를 전달하나요?

Google은 즉시 meta refresh(대기 시간 0)를 영구 리디렉션으로 처리하므로 실제로는 301과 거의 비슷하게 작동합니다. 대기 시간이 있는 refresh는 임시 리디렉션으로 간주됩니다. 다른 크롤러는 meta refresh를 덜 안정적으로 처리할 수 있으므로, 호스팅에서 허용한다면 언제나 서버 측 301을 사용하세요.

브라우저에서는 리디렉션되는데 리디렉션 검사 도구에는 200으로 표시되는 이유는 무엇인가요?

리디렉션이 HTTP 응답이 아니라 페이지의 HTML이나 JavaScript에서 일어나기 때문입니다. curl -L처럼 상태 코드만 따라가는 도구는 200 페이지에서 멈춥니다. TrueURL은 페이지 내용을 분석해 클라이언트 측 리디렉션을 별도의 홉으로 보여 줍니다.

meta refresh의 대기 시간은 얼마로 설정해야 하나요?

리디렉션이 목적이라면 0입니다. 대기 시간이 조금이라도 있으면 Google은 임시 리디렉션으로 처리하고, 방문자는 기다려야 하며, 접근성 문제도 생깁니다. 대기 시간은 먼저 메시지를 보여 줘야 하는 페이지에서만 의미가 있으며, 그런 페이지에도 계속 진행할 수 있는 명확한 링크를 넣어야 합니다.

TrueURL은 모든 JavaScript 리디렉션을 감지할 수 있나요?

아니요. 페이지 HTML에 고정된 대상 URL이 있는 간단하고 조건 없는 리디렉션만 감지합니다. location.href = '...', window.location = '...', location.replace('...') 같은 코드가 이에 해당하며, 최상위 setTimeout 안에 있는 경우도 포함됩니다. 외부 스크립트 파일에 있거나, 조건이 걸려 있거나, 사용자 동작으로 실행되거나, URL을 계산해서 만드는 리디렉션은 실제 브라우저에서 실행해야 합니다. 리디렉션되는 것으로 알고 있는 페이지에서 체인이 멈춘다면 아마 이 때문일 것입니다.

사이트에서 301 대신 meta refresh를 사용하는 이유는 무엇인가요?

대개 HTTP 리디렉션을 보낼 수 없기 때문입니다. 리디렉션 규칙을 지원하지 않는 정적 호스팅, 페이지 빌더, 오래된 CMS가 그런 예입니다. 일부 링크 단축 서비스와 클릭 추적 도구도 분석 스크립트를 먼저 실행하거나 목적지가 보게 될 리퍼러(referrer)를 제어하기 위해 HTML 리디렉션을 사용합니다.

HEAD 요청으로 meta refresh를 감지할 수 있나요?

아니요. HEAD 응답에는 헤더만 있고 본문이 없으므로 분석할 HTML이 없습니다. HEAD로 검사하면 TrueURL이 경고를 표시합니다. 이 도구에서는 GET을 사용하세요.