참고용으로 남긴 자료가 서비스 페이지와 같은 검색 후보가 되어도 될까. 실제 작업의 보관본 헤더와 상업 페이지 구성을 읽으며, 파일을 남기는 결정과 검색에 알리는 결정을 분리할 필요를 느꼈다.
보관 목적과 방문 목적이 다르다
원래 프로젝트에는 참고용으로 남긴 보관본과 방문자가 서비스를 이해하도록 만든 페이지가 함께 있다. 보관본은 제작 근거를 확인하는 목적일 수 있지만 서비스 내용을 대표하는 문서로 검색되게 하려는 목적과 같지 않다. 나는 파일이 존재한다는 이유로 모두 같은 사이트맵에 넣는 구성을 피하고 싶었다.
새 모듈의 audience는 public, archive와 private를 구분한다. public만 검색 목록에 넣고 archive는 목록에서 뺀다. 원래 참고 자료나 타인의 페이지를 공개 패키지에 넣지 않았다. 여기서 공유하는 것은 소유한 문서 목록에 목적을 선언하는 방식이다.
noindex는 접근 권한이 아니다
archive는 indexable이 false지만 authentication_required는 false다. 주소를 아는 사람이 접근할 수 있는 공개 보관 정책과 인증을 요구하는 비공개 정책을 분리한 것이다. 실제 서버의 noindex 헤더를 대신 설치하지 않으며 검색 결과에서 즉시 사라진다고 보장하지도 않는다.
private는 인증이 필요하다는 선언을 남기지만 이 함수 자체에는 로그인과 파일 제공 경로가 없다. 실제 서비스에서 서버가 그 선언을 강제하는지 별도로 검사해야 한다. 검색 목록에 없다는 사실을 비밀이 지켜진다는 의미로 사용하면 운영자가 잘못된 기대를 가질 수 있다.
같은 목록에서 검색 초과를 찾아낸다
파일 목록이 모두 맞아도 사이트맵에 보관본이 섞일 수 있다. reconcile은 public 경로만 예상하므로 보관본 주소가 전달되면 unexpected_sitemap에 남긴다. 반대로 공개 문서가 빠졌다면 missing_sitemap에 들어간다. 단순한 총개수 대조로는 서로 한 개씩 바뀐 경우를 잡을 수 없다.
이 검사는 호출자가 넘긴 목록을 비교한다. 실제 크롤러가 사이트 전체를 수집하거나 robots 규칙을 평가하는 프로그램은 아니다. 현재 공유 예제에는 고정된 합성 경로만 있으며 실제 업체의 보관 위치와 접근 가능한 주소를 공개하지 않는다.
정책을 바꿀 때도 목록으로 검토한다
문서를 archive에서 public으로 바꾸면 파일 경로는 같아도 검색 목록의 기대값은 달라진다. 반대로 public을 private로 바꾸면 사이트맵 제외만으로 끝낼 수 없다. 실제 서버의 인증과 기존 캐시 노출을 따로 확인해야 한다. 문서 내용이 같다는 이유로 공개 상태의 변경을 사소하게 취급하지 않는다.
이 모듈은 정책 변경을 실행하지 않고 새 선언으로 기대 목록을 다시 만든다. 변경 전후의 목록을 비교하면 무엇이 검색 대상에서 빠지고 들어왔는지 설명할 수 있다. 원본 자료를 더 많이 공개하는 기능보다 공개 책임을 다시 읽기 쉽게 만드는 데 초점을 뒀다.
홈페이지가 커지면 참고용 자료와 공개 글, 내부 운영 자료가 뒤섞이기 쉽다. 폴더 이름만으로 상태를 추정하기보다 문서별 목적과 실제 제공 경로를 함께 관리하면 좋다. 나는 이 작은 선언이 콘텐츠 발행과 자료 보관의 서로 다른 완료 기준을 유지하는 데 도움이 된다고 보았다.
참고 자료의 권한은 다른 문제다
공유 모듈의 8개 테스트는 경로와 공개 정책의 일관성을 다룬다. 저작물 이용 허락과 보관의 적법성은 판단하지 않는다. 검색 제외를 했다는 이유로 복제·공개 권한이 생기는 것은 아니므로 실제 자료를 연결하기 전에 사용 범위를 확인해야 한다. 이 글은 특정 사이트의 이용 조건을 해석하는 글도 아니다.
나는 남겨야 할 파일과 방문자에게 대표로 보여 줄 문서를 같은 문제로 뭉치지 않고 싶었다. 생성 목록, 검색 안내와 접근 통제의 책임이 나뉘면 어느 단계에서 검증이 빠졌는지 찾기 쉬워진다. 보관본을 정리하는 일도 홈페이지를 설명 가능하게 만드는 제작의 일부다.
삭제와 검색 제외, 비공개 전환도 다른 작업이다. 실제 삭제가 필요하다면 참조와 백업 정책까지 별도로 검토해야 한다. 이번 글과 모듈은 자료를 지우지 않고 목적에 따른 목록의 기대값만 정한다.