구글 사이트 검색 안됨: 순서대로 확인할 7가지 원인
핵심 답변: ‘구글 사이트 검색 안됨’은 대개 직접 확인할 수 있는 원인이 있습니다. 먼저 그 페이지가 정말 Google 색인에 없는지부터 확인하세요. 그다음 상태 코드, noindex, robots.txt, 소프트 404, JavaScript, 사이트맵과 링크, 시간의 일곱 가지를 이 순서대로 점검합니다. 페이지가 언제 나타날지는 누구도 말할 수 없습니다. Google은 크롤링에 “anywhere from a few days to a few weeks”, 즉 며칠에서 몇 주가 걸릴 수 있다고 밝혔고, 색인에 있다고 해서 순위가 높은 것도 아닙니다.
구글 사이트 검색 안됨? 먼저 정말 없는지 확인하세요
‘검색에 안 나온다’는 말은 세 가지 뜻일 수 있고, 이 글이 다루는 것은 첫 번째뿐입니다.
- 페이지가 Google 색인에 없습니다. Google이 페이지를 저장하지 않았으므로 어떤 검색에도 나타날 수 없습니다. 아래 일곱 가지 점검은 그 이유를 찾습니다.
- 페이지는 색인에 있지만 내가 찾는 자리에 없습니다. Search Console 「페이지 색인 생성」 보고서 도움말에 따르면 검색결과는 사용자마다 검색 기록, 위치 등 여러 변수에 맞춰 달라집니다. 그래서 색인된 페이지라도 모든 검색에 나타나지는 않고, 늘 같은 순위에 있지도 않습니다. 이것은 색인이 아니라 순위의 문제입니다.
- 페이지를 새로 만들었습니다. 그렇다면 시간이 가장 유력한 원인입니다(점검 7).
어느 경우인지 확인하는 방법입니다.
- 정확한 주소로 검색하기. Google에
site:https://your-site.example/your-page를 입력하세요. 페이지 색인 생성 보고서 도움말은site:와 정확한 URL을 합친 이 형식을 작은 사이트의 첫 번째 테스트로 소개하고, URL 검사 도움말은 페이지 URL을 직접 검색해 보는 것을 표시 여부를 가리는 확실한 방법이라고 부릅니다. - Search Console에 물어보기. 「URL 검사」 도구는 한 주소에 대해 Google이 저장해 둔 정보를 보여 줍니다. 「URL이 Google에 등록되어 있음」은 페이지가 검색결과에 표시될 자격은 있지만 반드시 표시된다는 보장은 없다는 뜻입니다. 「URL이 Google에 등록되어 있지 않음」은 표시될 수 없다는 뜻이고, 「Google에는 아직 알려지지 않은 URL」은 Google이 그 주소를 아직 본 적이 없다는 뜻입니다. 저장된 결과는 실시간이 아닙니다. 현재 페이지는 「라이브 URL 테스트」로 확인합니다.
Search Console의 「페이지의 색인이 생성되지 않는 이유」 표에 그 페이지가 이미 있다면, 상태 이름이 어디를 볼지 알려 줍니다.
| Search Console의 상태 | 확인할 곳 |
|---|---|
| 서버 오류(5xx), 찾을 수 없음(404), 승인되지 않은 요청(401)으로 인해 차단됨, 액세스 금지(403)로 인해 차단됨, 리디렉션이 포함된 페이지 | 점검 1 |
| URL이 'NOINDEX'로 표시됨 | 점검 2 |
| URL이 robots.txt에 의해 차단됨, robots.txt로 인해 차단되었으나 색인이 생성됨 | 점검 3 |
| Soft 404 | 점검 4 |
| Google에는 아직 알려지지 않은 URL | 점검 6과 7 |
| 발견됨 - 현재 색인이 생성되지 않음, 크롤링됨 - 현재 색인이 생성되지 않음 | 점검 7 |
| 사용자가 선택한 표준이 없는 중복 페이지 | 일곱 가지 모두 해당 없음. Google이 다른 주소를 대표 버전으로 골랐으며, 이것을 ‘오류가 아님’으로 설명합니다 |
순서대로 실행할 7가지 점검
앞쪽 점검이 그 뒤의 모든 것을 막습니다. your-site.example은 내 주소로 바꾸세요.
점검 1: 페이지가 상태 200으로 응답하나요?
Google의 HTTP 상태 코드 문서에 따르면 Google은 4xx 상태를 반환하는 URL을 색인하지 않고, 이미 색인된 URL이 4xx를 반환하기 시작하면 색인에서 제거합니다. 서버 오류(5xx)가 계속되면 크롤링 속도를 늦추고, 그런 URL은 결국 버려집니다. 리디렉션은 판단을 목적지에 넘깁니다. Google은 리디렉션하는 URL의 콘텐츠를 무시하며, 페이지 색인 생성 보고서도 「리디렉션이 포함된 페이지」 자체는 색인되지 않는다고 말합니다. 200은 조건일 뿐 약속이 아닙니다. 2xx 상태는 색인을 보장하지 않는다(“doesn't guarantee indexing”)고 Google은 씁니다.
놓치기 쉬운 장애물이 둘 있습니다. 로그인은 Googlebot을 막습니다. Googlebot은 인증 정보를 보내지 않기 때문입니다. 또 방화벽이나 봇 차단이 내 브라우저에는 페이지를 보여 주면서 Googlebot에는 오류로 응답할 수 있습니다. Google 도움말은 잘못 설정된 방화벽과 DoS 보호 시스템을 Googlebot을 실수로 막는 경로로 꼽습니다.
curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/your-page
원하는 결과는 200과 내가 기대한 주소입니다. 이것은 내 컴퓨터가 받는 응답입니다. Google이 받는 응답은 「URL 검사」의 라이브 테스트가 보여 줍니다.
SEOgrinder에서: 「Google에서의 페이지」 탭의 「색인」 카드에 HTTP 상태가 나옵니다. 나쁜 상태는 과제로도 올라옵니다. 예를 들면 「서버가 상태 코드 503를 반환했습니다」입니다.
점검 2: 페이지에 noindex가 걸려 있나요?
noindex 규칙은 Google에 페이지를 검색에서 빼라고 알립니다. 이 규칙은 페이지 head의 robots 메타 태그나 X-Robots-Tag HTTP 헤더에 들어 있습니다. Googlebot이 페이지를 크롤링해 규칙을 읽고 나면, noindex 문서의 표현대로 “Google will drop that page entirely from Google Search results”, 즉 그 페이지를 Google 검색결과에서 완전히 제외합니다. 실수로 걸리는 경로는 이렇습니다.
- CMS 설정. WordPress의 읽기 설정에는 검색 엔진이 이 사이트를 색인하지 않도록 요청하는 옵션이 있습니다(영어 이름은 “Discourage search engines from indexing this site”). WordPress 문서에 따르면 버전 5.3부터 이 옵션을 켜면 WordPress가
noindex,nofollow가 담긴 robots 메타 태그를 페이지 head에 씁니다. - 헤더. 서버나 CDN이
X-Robots-Tag: noindex를 보낼 수 있습니다. 이 헤더는 페이지 소스에 나타나지 않아 놓치기 쉽습니다. - 삭제 요청. 누군가 이 주소에 삭제 도구를 썼다면 요청은 약 6개월만 유지되고, 「임시 삭제 항목」 탭에 나열됩니다(Search Console 도움말).
curl -s -D - -o /dev/null https://your-site.example/your-page | grep -i x-robots-tag
curl -s https://your-site.example/your-page | grep -i -E 'name="(robots|googlebot)"'
출력이 없으면 그런 헤더나 태그를 찾지 못했다는 뜻입니다. 한 줄이라도 나오면 noindex(또는 none)가 페이지를 막고 있는 것입니다. robots.txt가 페이지를 차단하고 있다면(점검 3) 크롤러는 noindex 규칙을 끝내 보지 못합니다(“the crawler will never see the noindex rule”). 그러니 차단부터 풀어야 합니다. JavaScript가 나중에 추가하는 태그는 curl에 나타나지 않습니다. Google이 실제로 받은 내용은 라이브 테스트가 보여 줍니다.
SEOgrinder에서: robots 메타 태그가 noindex라고 하면 「색인」 카드의 첫 줄이 「페이지가 색인에서 제외되었습니다」로 바뀌고, 할 일 목록에 「페이지가 Google에서 제외되어 있습니다」가 나옵니다. HTTP 헤더의 noindex는 「HTTP 헤더가 페이지를 Google에서 배제하고 있습니다」라는 과제로 나타납니다.
점검 3: robots.txt가 페이지를 막고 있나요?
https://your-site.example/robots.txt 파일은 크롤러에게 어떤 경로를 건드리지 말아야 하는지 알려 줍니다. Google의 robots.txt 소개는 이 파일을 우선 크롤러 트래픽을 관리하는 수단으로 설명합니다. 내 페이지에 해당하는 규칙이 있으면 Googlebot은 그 페이지를 가져가지 않습니다. 차단된 URL은 요청 없이 건너뜁니다(JavaScript SEO 기본 문서). 다른 페이지가 링크하고 있으면 그 URL이 검색결과에 나타날 수는 있지만, Google이 페이지를 읽지 않았으므로 설명은 없습니다.
전형적인 사고는 두 줄입니다.
User-agent: *
Disallow: /
이 두 줄은 파일을 따르는 모든 크롤러에게 사이트 전체를 막습니다. Disallow: /shop/처럼 더 좁은 규칙은 그 폴더와 그 아래 전체를 막습니다. Disallow 줄마다 내 페이지의 경로와 비교해 보세요.
SEOgrinder에서: 「색인」 카드에 「이 주소는 크롤링이 차단되어 있습니다」가 나오고, 걸린 규칙을 함께 보여 줍니다. 과제 이름은 「robots.txt가 이 주소를 차단합니다」입니다.
점검 4: 페이지가 소프트 404인가요?
소프트 404는 ‘찾을 수 없음’이라고 말하거나 거의 아무것도 보여 주지 않으면서 상태 200으로 응답하는 페이지입니다. Google의 상태 코드 문서에 따르면 2xx 응답에 오류 메시지나 빈 페이지가 담겨 있으면 Search Console이 소프트 404 오류를 표시합니다. 정말로 없는 페이지에는 Google이 진짜 404를 권합니다. 있어야 하는 페이지라면 해결책은 반대입니다. 페이지에 실제 콘텐츠를 채우세요.
「페이지 색인 생성」 보고서에서 「Soft 404」라는 사유를 찾아보세요. 개별 주소는 라이브 테스트를 실행한 뒤 「테스트된 페이지 보기」를 열면, Google이 렌더링한 페이지의 스크린샷을 볼 수 있습니다. 그다음 존재할 수 없는 주소를 서버에 요청해 봅니다.
curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/page-that-cannot-exist
원하는 결과는 404입니다. 200이 나오면 서버가 모든 주소에 성공으로 응답한다는 뜻이며, 소프트 404의 전형적인 패턴입니다. nginx, Node, 싱글 페이지 앱의 해결법은 소프트 404 오류 글에 있습니다.
SEOgrinder에서: 「색인」 카드에 「없는 주소가 404를 올바르게 반환합니다」 또는 「없는 주소가 404 대신 200를 반환합니다」 줄이 나오고, 후자는 과제로도 올라옵니다. SEOgrinder는 주소를 하나 지어내 서버에 요청하므로, 존재하지 않는 주소를 서버가 어떻게 다루는지를 검사합니다. Google이 내 페이지를 소프트 404로 분류했는지는 Search Console만 알려 줍니다.
점검 5: 콘텐츠가 브라우저에서만 만들어지나요?
Google은 JavaScript를 실행합니다. Google의 JavaScript SEO 기본 문서에 따르면 상태 200인 페이지는 렌더링 대기열에서 기다리며, 이 과정은 “a few seconds, but it can take longer”, 즉 몇 초이지만 더 길어질 수도 있습니다. 그래서 JavaScript만으로 페이지가 Google에서 빠지지는 않습니다. 같은 문서가 설명하는 네 가지 경우에는 JavaScript가 원인이 됩니다.
- 원본 HTML의 noindex. Google이 noindex를 만나면 렌더링을 건너뛸 수 있어서, 그 태그를 없애는 JavaScript는 “may not work as expected”, 즉 기대대로 동작하지 않을 수 있습니다. 페이지를 색인시키고 싶다면 원본 코드에 noindex를 넣지 마세요.
- 차단된 스크립트. “Google Search won't render JavaScript from blocked files or on blocked pages.” 차단된 파일의 JavaScript나 차단된 페이지의 JavaScript는 렌더링하지 않습니다.
- 링크가 아닌 링크. Google은
href속성이 있는<a>요소만 링크로 찾을 수 있습니다.#뒤에서만 달라지는 주소는 믿을 수 없습니다. - 싱글 페이지 앱의 오류 페이지. 모든 주소에 200으로 응답하는 앱은 소프트 404를 만듭니다(점검 4).
테스트하려면 「페이지 소스 보기」(개발자 도구의 요소 패널이 아닙니다)를 선택해 제목과 본문을 찾아보세요. 없다면 JavaScript가 만드는 것입니다. 그다음 라이브 테스트의 「테스트된 페이지 보기」로 Google이 어떻게 렌더링했는지 확인합니다. Google은 서버 사이드 렌더링이나 프리렌더링이 여전히 좋은 방법이라고 덧붙입니다. “not all bots can run JavaScript”, 즉 모든 봇이 JavaScript를 실행할 수 있는 것은 아니기 때문입니다. 그 다른 봇들은 AI 크롤러와 JavaScript 렌더링 글에서 다룹니다.
SEOgrinder에서: 서버가 보내는 HTML에 텍스트, 제목, 내부 링크가 거의 없으면 「페이지가 브라우저에서만 조립됩니다」 과제가 나타납니다. JavaScript를 실행하지 않는 크롤러에 위험이 있다는 점을 알리는 것입니다. Google이 내 페이지를 제대로 렌더링하는지는 라이브 테스트가 보여 줍니다.
점검 6: Google이 페이지를 찾을 수 있나요? 사이트맵과 링크
Google은 찾은 것만 색인할 수 있습니다. 페이지 색인 생성 보고서 도움말에 따르면 Google은 사이트맵, 크롤링 요청, 또는 어딘가에서 오는 링크로 페이지를 알게 됩니다. Googlebot은 이미 크롤링한 페이지에서 발견한 URL을 크롤링하므로, 어디에서도 링크되지 않은 페이지는 계속 알려지지 않을 수 있습니다. 특히 외부 링크가 적은 새 사이트에서 그렇습니다(사이트맵 개요).
- 사이트맵 확인.
https://your-site.example/sitemap.xml이나 robots.txt에 적힌 주소를 열고 그 페이지가 있는지 찾아보세요. Google은 완전한 절대 주소를 요구하며, 검색결과에 나타나길 원하는 주소만 담으라고 합니다(사이트맵 만들기). 404로 응답하거나 리디렉션되거나 noindex가 붙은 페이지는 들어가면 안 됩니다. - 사이트맵 제출. Search Console의 「Sitemaps」 보고서는 Googlebot이 파일을 읽은 시점과 오류를 보여 줍니다. robots.txt가 이 파일을 막고 있으면 안 됩니다.
- 페이지로 링크하기. 이미 색인된 페이지, 예를 들어 홈페이지나 관련 글 가운데 한 곳 이상에서 링크하세요.
- 색인 생성 요청은 아껴서. 새 웹사이트라면 Google은 홈페이지의 색인 생성 요청을 가장 좋은 첫 단계라고 부릅니다. 「URL 검사」 도구는 “just a few URLs”, 즉 몇 개의 URL을 위한 것이고 할당량이 있습니다. 같은 URL을 되풀이해 요청해도 “won't get it crawled any faster”, 즉 더 빨리 크롤링되지 않습니다(재크롤링 도움말).
사이트맵은 Google이 주소를 발견하도록 돕지만, 그 안의 모든 것이 크롤링되고 색인된다고 “doesn't guarantee”, 즉 보장하지는 않습니다. Google은 페이지가 약 500개 이하이고 빠짐없이 링크된 사이트에는 사이트맵이 필요하지 않을 수도 있다고 덧붙입니다.
SEOgrinder에서: 「색인」 카드에 「이 주소는 사이트맵에 있습니다」 또는 「이 주소는 사이트맵에 없습니다」가 나옵니다. 할 일 목록에는 「사이트맵을 찾을 수 없습니다」, 「사이트맵에 noindex 페이지가 1개 있습니다」(숫자는 페이지 수에 따라 달라집니다)가 나올 수 있고, 표본으로 점검한 사이트맵 주소 가운데 200을 반환하지 않는 주소를 세는 과제도 있습니다. 「사이트 순회」를 실행하면 「N개 페이지에 내부 링크가 없습니다」(N은 페이지 수) 같은 과제가 아무도 링크하지 않는 페이지를 보여 줍니다.
점검 7: Google에 충분한 시간을 주었나요?
Google은 날짜를 알려 주지 않습니다. 재크롤링 도움말은 이렇게 말합니다. “Crawling can take anywhere from a few days to a few weeks.” 페이지 색인 생성 보고서 도움말은 새 페이지나 사이트를 Google이 크롤링하고 색인하기 시작하는 데 “it can take a week or so”, 즉 일주일 정도 걸릴 수 있고, 색인은 크롤링 요청을 직접 제출해도 “is never instant”, 즉 결코 즉각적이지 않으며, Google은 모든 페이지가 색인에 들어간다고 보장하지 않는다고 덧붙입니다.
Search Console에는 기다림을 뜻하는 상태가 둘 있습니다. 「발견됨 - 현재 색인이 생성되지 않음」은 Google이 페이지를 찾았지만 아직 크롤링하지 않았다는 뜻으로, 보통 크롤링하면 사이트에 과부하가 걸릴 것으로 예상했기 때문입니다. 「크롤링됨 - 현재 색인이 생성되지 않음」은 Google이 페이지를 가져갔지만 색인에 넣지 않았다는 뜻입니다. Google은 이것을 “a common message for many sites”, 즉 많은 사이트에서 흔한 메시지이고 “doesn't necessarily indicate an issue that needs attention”, 즉 반드시 조치가 필요한 문제를 뜻하지는 않는다고 설명하며, 사이트의 모든 URL이 색인되기를 기대하지 말라고 말합니다.
점검 1~6이 깨끗하고 페이지를 만든 지 몇 주가 넘었다면, Google은 「크롤링됨 - 현재 색인이 생성되지 않음」에 대해 더 이상의 이유를 밝히지 않습니다. 여기서부터는 Google이 아니라 우리의 의견입니다. 그 페이지가 내 다른 페이지에 없는 이야기를 하고 있는지, 중요한 페이지가 그 페이지로 링크하는지 살펴보세요.
SEOgrinder에서: Google의 시계는 읽을 수 없습니다. Search Console과 연결한 로컬 설치에서는 스캔한 페이지에 대해 URL 검사 결과를 가져와 Google이 저장해 둔 답을 리포트에 보여 줄 수 있습니다. 예를 들면 「Google이 아직 이 주소를 알지 못합니다」입니다. seogrinder.com의 서비스 버전은 내 Search Console 계정에 연결되지 않습니다.
스캔이 알려 주는 것과 알려 주지 못하는 것
SEOgrinder는 우리의 도구이며, 우리가 만듭니다. 바깥에서 하는 스캔은 페이지가 무엇을 말하고 서버가 어떻게 응답하는지 읽습니다. 상태 코드, noindex, robots.txt, 서버의 소프트 404 동작, 전달되는 HTML, 사이트맵입니다. Google의 색인은 볼 수 없고, Google이 크롤링한 페이지를 왜 색인에 넣지 않았는지도 알려 줄 수 없습니다. 색인에 관한 질문은 Search Console과 정확한 주소 검색이 답합니다. 리포트가 모두 녹색이어도 페이지가 나타난다거나 어느 순위에 오른다는 약속은 아니며, 누구도 그런 약속을 할 수 없습니다.
자주 하는 실수
- 검색 한 번으로 판단하기. 결과는 사람과 위치에 따라 다릅니다. 정확한 주소로 검색하거나 「URL 검사」를 쓰세요.
- robots.txt로 막고 noindex도 넣기. 그러면 Google은 noindex 규칙을 끝내 보지 못합니다. 목표 하나에 수단 하나를 쓰세요.
- noindex를 한 곳에서만 지우기. 플러그인 설정, 메타 태그, HTTP 헤더에 동시에 있을 수 있습니다.
- 색인 생성을 계속 요청하기. 속도가 빨라지지 않습니다.
- 첫 발견에서 멈추기. 한 페이지에 원인이 여러 개 겹칠 수 있으니 일곱 가지를 모두 점검하세요.
자주 묻는 질문
새로 만든 사이트가 구글에 나오지 않는 이유는 무엇인가요?
가능한 이유 하나는 Google이 아직 크롤링하지 않았다는 것이며, 일주일 정도 걸릴 수 있습니다. 사이트맵을 제출하고, 홈페이지의 색인 생성을 요청하고, 일곱 가지 점검을 실행하세요.
Search Console에는 「URL이 Google에 등록되어 있음」이라고 나오는데 페이지를 못 찾겠습니다. 왜 그런가요?
「URL이 Google에 등록되어 있음」은 페이지가 표시될 수 있다는 뜻이지 모든 검색에 표시된다는 뜻이 아닙니다. 정확한 주소로 검색해 보세요. 나온다면 색인에는 문제가 없고, 순위의 문제입니다.
페이지가 Google에 있다가 사라졌습니다. 어느 점검이 해당되나요?
점검 1~3부터 시작하세요. Google은 4xx 상태를 반환하는 색인된 URL을 제거합니다. 또 오류가 그만큼 늘지 않았는데 색인된 페이지가 줄었다면 robots.txt, noindex, 로그인으로 기존 페이지를 막고 있을 수 있다고 말합니다. 삭제 요청이 있었는지도 찾아보세요.
다음 단계
사라진 페이지의 주소를 SEOgrinder의 무료 스캔에 입력하세요. 「Google에서의 페이지」 탭에서 「색인」 카드를 읽고 빨간 줄을 모두 고치세요. 할 일 목록이 무엇부터 할지 알려 줍니다. 수정한 뒤에는 「다시 확인」을 누르세요(리포트는 최대 24시간 캐시될 수 있습니다). 그다음 사이트맵을 제출하고 Google에 시간을 주세요. 색인을 넘어 사이트 전체를 점검하려면 SEO 체크리스트를 쓰세요.