홈페이지 기술 SEO 기반 6가지 — 앞 5개는 잘 노출되게, 마지막 1개는 노출 안 되게. 방향이 반대인 짝입니다. (예시는 ATNM 실제 적용)
| 요소 | 역할 | 한 줄 | 방향 |
|---|---|---|---|
| robots.txt | 봇 출입 규칙 | "여긴 와도 되고 저긴 안 돼" | 노출 |
| 사이트맵 | 페이지 목록 | "우리 페이지 목록은 이거야" | 노출 |
| canonical | 중복 정리 | "진짜 주소는 이거 하나" | 노출 |
| OG 이미지 | 공유 썸네일 | "링크 붙이면 뜨는 카드" | 노출 |
| 구조화 데이터 | 기계용 명함 | "이 회사가 누구인지 정확히" | 노출 |
| 민감정보 차단 | 유출 방지 | "사업자등록증은 안 보이게" | 차단 |
사이트 최상단(/robots.txt)에 두는 평문 파일. 건물 입구 안내판.
User-agent별 Allow/Disallow 규칙 + Sitemap: 위치 안내.크롤 예산 절약, 색인 원치 않는 경로 제외, 사이트맵 위치 안내로 색인 촉진.
User-agent: *
Allow: /
Disallow: /raw_data/ # 민감폴더 색인 금지
Sitemap: https://atnm.coreaup.com/sitemap.xml
robots는 "요청"일 뿐 강제가 아니다. 직접 URL 접근은 못 막는다(→ §6 서버 차단 병행). 실수로 Disallow: / 전체 차단, CDN 관리형과 오리진 파일 중복 주의.
사이트의 URL 목록 XML. 건물 층별 안내도.
<url><loc>로 색인 대상 페이지를 명시. 서치콘솔·서치어드바이저·빙에 제출하면 색인이 빨라지고 현황 추적 가능.
링크로 도달 어려운 페이지도 빠짐없이 수집, 신규/변경 페이지 빠른 발견.
<url><loc>https://atnm.coreaup.com/</loc><priority>1.0</priority></url>
<url><loc>https://atnm.coreaup.com/creative.html</loc><priority>0.8</priority></url>
finance.html(회계)은 일부러 제외 — 민감 정보라 noindex.
noindex 페이지를 사이트맵에 넣기(모순), 404·리다이렉트 URL 포함, 잘못된 Content-Type.
페이지 <head>의 <link rel="canonical">. 여러 별명 중 본명 지정.
같은 페이지가 여러 주소(/, /index.html, ?utm=…, http/https, 대소문자)로 열릴 때 대표 주소 하나로 순위 신호를 통합한다. 안 하면 중복 콘텐츠로 순위 힘이 분산된다. 각 페이지가 자기 자신을 가리키는 자기참조 canonical이 기본.
<link rel="canonical" href="https://atnm.coreaup.com/">
모든 페이지를 홈으로 canonical(하위 페이지 색인 실종), 상대경로·오타로 엉뚱한 URL, noindex와 동시 사용(충돌).
<meta property="og:…"> 태그 묶음. 링크의 명함/썸네일 카드.
카카오톡·페북·네이버·슬랙 등에 링크를 붙이면 뜨는 미리보기 카드(제목·설명·이미지). 권장 규격 1200×630, 절대 URL.
없으면 밋밋하거나 깨진다. 있으면 로고·제목 카드로 떠서 클릭률·신뢰도↑.
<meta property="og:title" content="주식회사 아이테어눔 | 헬스케어 매니지먼트 플랫폼">
<meta property="og:image" content="https://atnm.coreaup.com/assets/og-image.png">
과거 이 이미지가 없어서 404(공유 시 안 뜸) → 로고 기반 1200×630로 제작해 해결.
상대경로 이미지(공유 안 됨), 파일 404, 캐시(디버거로 강제 갱신 필요).
<script type="application/ld+json"> 안 schema.org 데이터. 봇·AI가 읽는 명함.
"이건 회사, 이름 X, 별칭 Y, 홈 Z"처럼 엔티티 의미를 명확히 전달. 검색엔진이 브랜드를 하나의 엔티티로 인식 → 지식패널·리치결과. AI 답변(GEO)이 인용할 때 신뢰 정보로 활용.
{
"@type": "Organization",
"name": "주식회사 아이테어눔",
"alternateName": ["ATNM", "atnm", "Aeternum", "아이테어눔"],
"url": "https://atnm.coreaup.com"
}
alternateName 배열 덕에 어떤 별칭으로 검색해도 같은 회사로 인식. 주소·전화 확정 시 LocalBusiness/MedicalBusiness로 확장 → 지도/지역검색.
페이지에 없는 정보 마크업(스팸 페널티), JSON 문법 오류, 잘못된 @type.
사업자등록증·견적서·초본 등 원본이 웹에서 열리거나 색인되지 않게. 최우선.
정적 폴더에 있으면 URL만 알면 누구나 다운로드, 색인되면 유출. 실제 사고로 직결 → SEO보다 우선.
| 계층 | 방법 | 효과 |
|---|---|---|
| ① robots.txt | Disallow: /raw_data/ | 검색 색인 차단(약함) |
| ② 서버단(핵심) | server.js에서 /raw_data 404 처리 | URL 직접 접근 차단 |
| ③ 파일 자체 | 서버 assets·raw_data 민감 원본 삭제 | 노출면 제거 |
핵심: robots(①)만으론 직접 접근이 안 막힌다. 서버단 404(②)가 진짜 방패. 원본은 로컬 raw_data에만 보존.
"robots로 막았으니 안전" 착각(직접 URL로 뚫림), 공개 assets/에 민감파일 혼입.