주제와 문서 위치를 정하는 순서
진료 페이지의 주소는 독자가 찾는 내용과 사이트 안의 위치를 이해할 수 있는 이름으로 정하는 것이 좋습니다. Google의 URL 구조 가이드는 간단하고 논리적인 구성을 권하며 읽을 수 없는 긴 식별자보다 설명되는 단어를 사용하도록 안내합니다. 진료 이름에 검색어를 길게 보태는 방식보다 해당 문서가 담당할 주제를 먼저 정하고 주소 후보를 비교하는 명명 절차로 적용할 수 있습니다.
후보를 만들기 전에는 이미 있는 사이트의 상하위 구성을 읽습니다. 어떤 안내 아래에 이 페이지를 배치할지와 같은 수준의 문서들이 무엇을 설명하는지 알아야 주소에서 표현할 관계를 정할 수 있습니다. 여기서의 계층 검토는 병원 조직이나 진료 체계를 새로 만드는 일이 아닙니다. 실제 공개할 내용과 현재 사이트의 구조를 자료로 받아 문서의 위치를 설명하는 작업입니다.
| 명명 전에 정할 질문 | 후보를 비교할 자료 | 선택할 때 남길 이유 |
|---|---|---|
| 이 문서가 답할 독립적인 주제는? | 현재 본문의 주요 설명 | 다른 문서와 구별되는 내용 |
| 어떤 상위 안내에서 찾는가? | 사이트의 실제 구성 | 문서 위치를 이해할 관계 |
| 누가 읽는 이름인가? | 대상 독자가 사용하는 표현 | 이름을 알아볼 수 있는 언어 |
| 새 주소가 필요한 작업인가? | 신규 작성과 기존 페이지의 상태 | 명명과 변경 작업의 구분 |
Google은 URL에 잠재고객의 언어로 된 단어를 사용하고 필요한 경우 음역된 단어를 쓰도록 권합니다. 주소를 반드시 영어로 만드는 기준은 아닙니다. 독자가 실제 사용하는 표현을 먼저 조사할 수 있으며 원문이 제공되지 않은 상태에서 해당 병원의 진료 용어를 대신 확정하지 않습니다. 언어 선택과 링크에 사용될 기술적 인코딩은 각각 판단할 부분입니다.
주소의 간결함은 특정 글자 수를 맞추는 작업으로 정하지 않습니다. 지정 가이드는 긴 ID 숫자보다 읽을 수 있는 단어를 권하고 불필요한 매개변수를 줄이라는 내용을 제시합니다. 제목의 모든 표현을 복사하거나 비슷한 키워드를 계속 추가해야 한다는 규칙은 없습니다. 문서의 역할을 알아볼 수 있는 후보인지 실제 본문과 대조하는 방식이 적절합니다.
이름을 실제 링크로 구성하는 조건
주소 후보가 정해지면 링크에서 쓰일 실제 형태도 조사해야 합니다. Google은 IETF STD 66에 정의된 URL을 지원하며 예약된 문자는 퍼센트 인코딩되어야 한다고 안내합니다. 화면에 보이는 읽기 쉬운 이름과 서버에 전달되는 주소 문자열 사이에 다른 표기가 있을 수 있습니다. 주소에 쓴 문자가 경로나 조건의 구분 기호로 해석되는지에 따라 전달할 값도 달라질 수 있으므로 표준에 맞는 문자열을 조사하는 단계입니다. 작성한 이름을 링크로 연결하는 과정에서 필요한 처리가 무엇인지 기술 자료와 대조할 수 있습니다.
링크의 href 속성에는 필요한 경우 퍼센트 인코딩을 사용하라는 권고가 있습니다. 예약되지 않은 ASCII 문자는 인코딩하지 않은 형태로 남을 수 있고 ASCII 범위 밖 문자는 인코딩되어야 한다고 가이드는 설명합니다. 한글 이름을 사용한다는 명명 판단을 인코딩된 글자 모양만으로 취소할 이유는 없습니다. 보이는 이름과 실제 링크값을 각각 읽어 동일한 목적지로 연결되는지 조사하는 절차입니다.
| 조립할 주소의 요소 | 가이드가 제시하는 방식 | 검토할 조합 |
|---|---|---|
| 단어 사이의 경계 | 밑줄보다 하이픈 권장 | 연결된 단어를 구별할 수 있는가? |
| 매개변수의 키와 값 | 등호로 두 값을 구분 | 이름과 값의 관계가 명확한가? |
| 추가 매개변수 | 앰퍼샌드로 추가 | 키·값 쌍 사이의 경계가 있는가? |
| 한 키에 여러 값 | 표준과 충돌하지 않는 쉼표 등 사용 | 같은 키의 값과 별도 조건이 섞이지 않는가? |
단어 구분은 주소를 읽는 사람과 검색 시스템이 개념을 식별하도록 돕는 권고입니다. 기존 사이트에서 밑줄을 사용한 주소가 있다고 해서 이 원고를 근거로 모두 즉시 변경하는 조치는 하지 않습니다. 새 후보의 명명 규칙을 선택하는 작업과 공개된 링크를 바꾸는 작업은 규모가 다릅니다. 표의 조립 조건은 후보의 실제 구현값을 조사하는 데 사용할 수 있습니다.
Google의 URL 처리는 대소문자를 구분합니다. 같은 글자를 대문자와 소문자로 쓴 주소를 각각 콘텐츠가 있는 고유 URL로 취급한다고 가이드는 설명합니다. 서버가 이 두 형태를 같은 내용으로 처리한다면 텍스트의 대소문자를 동일하게 변환하라는 권고가 있습니다. 실제 서버의 동작이 어떤지 모른다면 명명 문서에 쓴 규칙만으로 이미 통일됐다고 보고하지 않습니다.
Google이 밑줄보다 하이픈을 권하는 설명에는 프로그래밍 언어의 표기 관습도 포함됩니다. 밑줄이 함께 표시해야 하는 개념에 널리 쓰이고 함수 이름인 format_date 등이 그런 예라고 가이드는 안내합니다. 이는 URL에서 단어의 경계를 식별하는 이유에 관한 설명입니다. 개발 코드의 함수명을 진료 페이지 주소 후보로 쓰라는 뜻이 아니며 코드의 이름과 공개 경로의 단어 구분을 같은 규칙으로 정하지 않습니다.
기능이 만드는 주소와 변경 범위
주소의 길이가 늘어난 이유가 문서 이름인지 기능의 조건인지 조사할 필요도 있습니다. 콘텐츠를 바꾸지 않는 불필요한 매개변수는 가능한 경우 삭제해 길이를 줄이라고 Google은 안내합니다. 본문을 구별하는 데 필요한 값과 유입 경로나 정렬 같은 별도 기능에 쓰는 값을 자료에서 나누어 읽는 방법입니다. 실제 용도를 알지 못한 값을 보기 복잡하다는 이유로 먼저 삭제하지 않습니다.
지나치게 복잡한 주소가 동일하거나 비슷한 내용의 URL을 불필요하게 많이 만들 수 있다는 점도 가이드의 설명입니다. 그 결과 크롤러가 필요 이상의 대역폭을 소비하거나 사이트의 모든 콘텐츠에 대해 색인을 완전히 생성하지 못할 수 있다고 안내합니다. 주소 이름을 짧게 보이게 만드는 질문 이외에 시스템이 어떤 URL을 여러 개 생성하는지 조사할 질문이 남습니다.
필터 조건을 계속 추가하면 약간씩 다른 목록을 가리키는 주소가 많이 생길 수 있습니다. Google은 항목 모음의 추가 필터링을 일반적인 원인으로 설명합니다. 진료 안내 사이트에 같은 기능이 있다는 사실을 이 설명에서 가정하지 않고 실제 목록이나 검색 기능이 제공될 때 생성 주소를 읽을 수 있습니다. 단일 문서의 고유 이름과 목록을 바꾸는 기능의 조건을 구별하는 데 활용할 수 있는 내용입니다.
추천·정렬 매개변수와 세션 ID도 불필요하게 많은 주소가 생성되는 원인으로 열거됩니다. 특정 기능을 모두 금지하는 문구로 읽기보다 공개 사이트에 그런 조건이 실제로 사용되는지 조사할 수 있습니다. 이름 후보를 정할 자료와 시스템이 자동으로 붙이는 값의 자료가 다르면 양쪽을 함께 받아야 합니다. 주소의 한 부분만 보고 어떤 기능이 작동하는지 대신 추정하지 않습니다.
이처럼 생성되는 주소에 Google이 접근하고 있다면 가이드는 robots.txt로 문제가 되는 URL의 크롤링을 차단하는 방법을 안내합니다. 검색결과를 생성하는 동적 주소, 무한한 캘린더, 정렬과 필터링 함수를 대상으로 설명합니다. 사이트에 속성 탐색이 있다면 해당 URL의 크롤링을 관리하는 방법도 알아보도록 권합니다. 개별 진료 문서의 주소 이름을 짓는 작업에 이 조치를 일괄 적용하지 않고 실제 기능이 만든 경로를 먼저 특정해야 합니다.
Google 가이드는 URL 구조의 요구사항을 지키지 않으면 비효율적인 크롤링이 발생할 가능성을 설명하며 극도로 높은 크롤링 속도나 아예 크롤링되지 않는 경우를 예로 듭니다. 따라서 이름을 정하는 일에는 실제 사이트가 요청 가능한 주소를 제공하는지에 관한 질문도 있습니다. 설명이 있는 단어를 선택한 것과 크롤러가 해당 경로에 접근한 결과는 다른 자료에서 읽는 내용입니다.
주소 구현의 후속 질문
주소의 # 뒤 값으로 다른 본문을 만들면 되나요?
Google 검색은 일반적으로 URL 프래그먼트를 지원하지 않으므로 이를 사용해 페이지 콘텐츠를 변경하지 말라고 안내합니다. JavaScript로 내용을 바꾸고 있다면 History API를 사용하는 설명이 있습니다. 문서 이름과 화면 전환의 구현 방식은 별도로 조사할 수 있습니다.
국가별 문서의 위치도 주소에 표현할 수 있나요?
다지역 사이트에는 지역 타겟팅을 쉽게 할 URL 구조를 권하며 국가별 도메인이나 하위 디렉터리의 예가 제시됩니다. 이를 한 병원의 실제 지역 범위로 만들어 적용하지 않고 다지역 자료가 있을 때 검토할 구조로 읽을 수 있습니다.
세션 ID를 반드시 주소에 넣어야 하나요?
지정 문서는 가능한 경우 세션 ID를 URL에 사용하지 말고 쿠키를 사용하도록 권합니다. 현재 사이트의 인증이나 방문 기능을 이 글에서 변경하는 지시가 아니라 어떤 값이 방문마다 새로운 주소를 만드는지 조사하는 참고입니다.
날짜 목록이 끝없이 연결되면 무엇을 조사하나요?
동적으로 생성된 캘린더가 과거와 미래의 날짜 링크를 제한 없이 만들 수 있다고 가이드는 설명합니다. 무한한 캘린더의 미래 페이지로 연결되는 링크에는 nofollow를 추가하는 권고가 있습니다. 실제 날짜 범위와 생성 링크가 있을 때에만 적용할 질문입니다.
상위 경로를 향한 링크가 잘못된 주소를 만들면 어떤 조건을 조사하나요?
가이드는 없는 페이지에 올바른 상태 코드로 응답하지 않는 상황에서 상위 상대 링크가 무한한 공백을 만들 수 있다고 설명합니다. 해결 방법으로 루트 상대 URL을 제시합니다. 실제 오류의 응답 조건과 링크 경로를 같이 읽어야 해당 설명을 적용할 수 있습니다.