방문자보다 먼저 끊긴 링크 찾기
마지막 업데이트:
사이트의 모든 끊긴 링크는 누군가에게 발견될 것입니다. 유일한 질문은 그 누군가가 조용한 오후에 검사를 실행하는 당신인지, 구매 도중의 방문자인지, 문서 속 링크를 따라온 고객인지, 아니면 페이지의 가치를 결정하는 검색 크롤러인지입니다. 링크는 조용히 썩습니다 — 페이지가 이전하고, 도메인이 바뀌고, 이미지 이름이 바뀌고, 파트너가 재편됩니다 — 그리고 페이지 자체는 그 부패를 알리지 않습니다. 이 글은 끊긴 링크 검사를 언제 실행할지, 보고되는 상태가 실제로 무엇을 의미하는지, 발견한 것을 어떤 순서로 고칠지, 그리고 한 번에 한 페이지씩 검사하는 것의 정직한 한계를 다룹니다.
끊긴 링크 검사를 언제 실행할까
가장 가치가 높은 순간은 URL이 무더기로 바뀌는 때입니다. 재설계 후에는 템플릿이 다시 만들어지고 내비게이션이 다시 쓰이며, 수년간 올바랐던 링크가 새 디자인이 더 이상 제공하지 않는 경로를 조용히 가리킬 수 있습니다. 이전 후 — 새 CMS, 새 플랫폼, 새 URL 구조 — 모든 내부 링크는 사실상 콘텐츠가 어디에 있는지에 대한 새로운 주장이 되며, 그 주장 중 일부는 틀릴 것입니다. 도메인 변경 후에는 옛 주소, 파트너 링크, 삽입된 이미지가 모두 누군가 쓰기를 기억해야 했던 리디렉션에 의존합니다. 검사는 첫 불만 이후가 아니라 출시의 일부로 실행하세요.
조용한 순간도 중요합니다. 콘텐츠를 삭제하거나 병합하면 그것을 가리키던 모든 링크가 고아가 됩니다; 미디어 라이브러리나 이미지 명명 방식을 바꾸면 아무도 그 변경을 기억하지 못하는 몇 달 뒤에 사진이 깨집니다; 그리고 다른 사이트들은 당신에게 알리지 않고 재편되므로, 게시 당시 작동했던 외부 링크는 자기 일정에 따라 썩습니다. 현명한 리듬은 구조적 변경이 있을 때마다 홈페이지와 핵심 랜딩 페이지를 검사하고, 여기에 더해 정기적인 순회 — 대부분의 사이트에서는 월 1회로 충분 — 를 방문자와 검색 엔진이 실제로 사용하는 페이지에 대해 하는 것입니다. 이 사이트의 끊긴 링크 검사기는 한 번에 한 페이지를 실행하며, 그 리듬에 정확히 들어맞습니다: 중요한 페이지를 의도적으로 검사하는 것입니다.
상태가 실제로 의미하는 것
링크 검사는 링크당 하나의 질문으로 축소됩니다: 링크를 따라갔을 때 서버는 무엇이라고 답하는가? 정상은 직접적인 성공(2xx)을 의미합니다. 리디렉션은 링크가 한 번 이상의 3xx 홉을 거쳐야만 작동함을 의미합니다 — 오늘은 괜찮지만, 각 홉은 누군가 지켜야 하는 약속입니다. 끊김은 4xx 응답을 의미하며, 가장 흔한 것은 404 찾을 수 없음입니다: 약속된 페이지는 거기 없습니다. 서버 오류는 5xx 응답을 의미합니다: 페이지는 존재할 수 있지만 그 서버가 전달에 실패했습니다. 시간 초과와 연결 불가는 사용할 수 있는 응답이 전혀 도착하지 않았음을 의미합니다 — 느림, 죽은 호스트, DNS 실패. 그리고 건너뜀은 대상이 사설 또는 차단된 주소로 해석되므로 검사기가 의도적으로 가져오지 않았음을 의미합니다.
검색 엔진도 같은 응답을 읽습니다. HTTP 상태 코드가 자사 크롤러에 어떤 영향을 미치는지에 대한 Google 자체 문서에 따르면, 2xx 응답은 콘텐츠를 색인 검토 대상으로 만들고, 크롤러는 리디렉션을 따라가며(기본 최대 10홉) 최종 대상을 중요하게 여겨지는 페이지로 취급하고, 4xx를 반환하는 URL은 색인되지 않으며 — 이전에 색인되어 있었다면 색인에서 제거되고 — 한편 지속적인 5xx 오류는 크롤링을 늦추고 결국 페이지도 떨어뜨릴 수 있습니다. 그래서 내부의 끊긴 링크는 겉보기 결함보다 나쁩니다: 크롤러가 따라가도 아무것도 얻지 못하고, 링크의 가치와 대상의 색인 내 위치가 함께 증발합니다.
이 순서로 고치기: 내부 404, 리디렉션 체인, 이미지
먼저 내부 404. 자신의 사이트로 향하는 끊긴 링크는 전적으로 당신의 통제 아래 있고, 이미 얻은 방문자들 앞에 서 있으며, 당신이 링크하는 — 아마도 중요하기 때문에 — 페이지가 존재하지 않는다고 크롤러에게 말합니다. 근원에서 고치세요: 실수로 제거되었다면 페이지를 복원하고, URL이 표류했다면 바로잡고, 링크를 옛 페이지를 진정으로 대체한 페이지로 다시 향하게 하세요. 리디렉션은 다른 사람들이 북마크하거나 링크했을 수 있는 주소를 위해 남겨두세요; 자신의 페이지에 있는 링크는 그저 올바르면 됩니다.
그다음 리디렉션 체인. 이전 후 리디렉션 한 번은 정상입니다. 체인 — 옛 URL이 더 새로운 URL로 리디렉션하고 그것이 현재 URL로 리디렉션하는 것 — 은 클릭마다 홉당 왕복 한 번의 비용을 들이며, 각 홉은 다음 이전에서 잃어버릴 수 있는 또 하나의 규칙입니다. 링크 자체를 최종 주소로 업데이트하세요; 홉을 봐야 할 때는 HTTP 상태 체인 추적기가 그것들을 하나씩 펼쳐 보입니다. 이미지는 세 번째. 깨진 이미지는 페이지 읽기를 막는 경우가 드물므로 앞의 둘 뒤에서 기다립니다 — 그래도 고치세요: 파일을 복원하고, 경로를 바로잡거나, 태그를 제거하세요. 빠진 이미지 상자로 얼룩진 페이지는 버려진 것처럼 읽히고, 때로 그 “이미지”는 사실 본문이 의존하는 차트나 제품 사진이기 때문입니다.
한 번에 한 페이지 — 그리고 왜 그 범위가 정직한가
이 글에 딸린 검사기는 실행당 한 페이지와 그 위의 링크 최대 300개를 검사하며, 그 사실을 표면에 말합니다. 그 범위는 의도적인 절충입니다. 한 페이지는 편집-게시 루프의 일부가 될 만큼 빠르게 가져오고, 파싱하고, 완전히 검사할 수 있습니다: 페이지를 바꾸고, 검사를 실행하고, 발견한 것을 고치고, 게시하세요. 또한 셈을 정확하게 유지합니다 — 찾은 링크, 검사한 링크, 나열되었지만 절대 가져오지 않은 링크(mailto:, tel:, 페이지 내 프래그먼트는 HTTP 요청이 아니므로 지어낸 상태로 꾸미는 대신 그대로 보고됩니다), 그리고 실행이 모든 것을 커버하기 전에 멈출 때마다 부분이라고 명시된 결과 — 조용한 잘라내기를 완전함으로 꾸미는 대신 말입니다.
전체 사이트 발견은 다른 도구를 쓰는 다른 일입니다: CMS는 당신이 게시하는 모든 페이지를 알고, 서버 로그는 실제 방문자와 크롤러가 이미 부딪힌 모든 404를 보여주며, Search Console은 Google 자체가 만난 오류를 보고합니다. 그것들을 이용해 어떤 페이지가 검사를 받을 가치가 있는지 정한 뒤, 하나씩 검사하고 발견한 것을 고치세요. 한 페이지 검사기가 절대 해서는 안 되는 일은 크롤링인 척하는 것입니다 — 그리고 당신이 절대 해서는 안 되는 일은 전체 사이트 도구가 없다는 이유로 트래픽을 짊어진 한 줌의 페이지 검사를 그만두는 것입니다.
행사가 아니라 습관으로 만들기
끊긴 링크가 가장 적은 사이트는 연례 대청소가 가장 큰 사이트가 아닙니다; 검사가 변경에 붙어 있는 사이트입니다. URL 구조, 템플릿, 메뉴 또는 미디어 폴더가 바뀔 때마다, 바깥으로 링크하는 페이지는 변경이 완료된 것으로 여겨지기 전에 검사를 받습니다. 콘텐츠가 삭제될 때마다, “무엇이 여기로 링크했는가?”라는 질문은 답이 아직 쉬울 때 던져집니다. 그 습관은 변경당 몇 분밖에 들지 않으며, 나중에 천 개 링크 보고서의 고고학을 막아줍니다.
그리고 검사가 실제로 손상을 찾으면, 증상만이 아니라 링크를 고치세요: 소스 페이지를 업데이트하고, 외부 세계가 옛 주소를 쓴다면 그것을 위해 깨끗한 리디렉션 하나를 유지하고, 같은 페이지를 다시 실행해 판정이 바뀌는 것을 지켜보세요. 끊긴 링크는 완전히 기계적으로 탐지할 수 있고 완전히 당신의 힘으로 수리할 수 있는 몇 안 되는 웹사이트 문제 중 하나입니다 — 유일한 진짜 실패 방식은 그것을 먼저 찾은 방문자를 통해 두 번째로 아는 것입니다.