» 워드프레스 » 워드프레스 robots.txt 파일 검색엔진 최적화 설정 방법

워드프레스 robots.txt 파일 검색엔진 최적화 설정 방법

워드프레스는 일반적인 SEO 개선 및 보안을 강화하기 위해서는 robots.txt 파일을 최우선으로 검토할 필요가 있다.

블로그에 콘텐츠가 계속 쌓이다 보면 워드프레스가 기본적으로 제공하는 robots.txt 파일로는 보안 유지 및 검색엔진 최적화를 달성할 수 없기 때문이다.

워드프레스 디폴트 robots.txt 파일

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

워드프레스를 처음 설치하면 robots.txt 파일이 위와 같이 생성되어 있다. 워드프레스의 robots.txt 파일의 디폴드 내용은 다음과 같다.

  • User-agent: * 는 모든 검색 엔진 크롤러(봇)에게 내 워드프레스 및 페이지의 수집을 허용한다는 규칙을 가리키는 지시문이다.
  • Disallow: /wp-admin/ 은 워드프레스의 관리 페이지는 수집을 차단하고, Allow: /wp-admin/admin-ajax.php 파일은 수집을 허용한다는 뜻이다. admin-ajax.php 파일은 일부 플러그인과 테마에서 AJAX 요청을 처리하는 데 필요하므로 Allow 설정을 반드시 해줘야 한다.

그런데, 검색엔진 최적화와 보안 강화 관점에서 robots.txt 를 검토해 보면 아래와 같이 정교하게 설정할 필요가 있다.

SEO 개선 및 보안 강화를 위한 robots.txt 설정 방법

User-agent: *
Allow: /wp-admin/admin-ajax.php
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /wp-signup.php
Disallow: /wp-content/plugins/
Disallow: /readme.html
Disallow: /search/
Disallow: /*?s=

Sitemap: https://newbinsight.com/post-sitemap.xml
Sitemap: https://newbinsight.com/wp-sitemap.xml

위의 robots.txt는 현재 이 워드프레스에 설정된 내용이다. 각 사이트의 robots.txt를 확인하는 방법은 주소창에 “https://사이트주소/robots.txt”를 입력하면 확인할 수 있다.

위에서 보는 것과 같이 디폴트 robots.txt 파일보다 많은 내용이 추가되었다. 주로 차단(Disallow)하는 규칙을 추가했다. robots.txt 파일은 파일질라를 통해 간단하게 수정할 수 있으며 사용법은 아래 문서 참고.

Disallow 설정 추가 이유

보안 관점에서 차단이 필요한 설정들

  • /wp-login.php, /wp-signup.php 파일은 워드프레스 루트 디렉토리에 위치한 개별 파일로써 Disallow: /wp-admin/을 설정한다고 해서 /wp-login.php/wp-signup.php가 자동으로 차단되지 않기 때문이다.
  • /wp-content/plugins/ → 검색엔진이 불필요하게 플러그인 파일을 크롤링하지 않게 하기 위해 플러그인 폴더를 차단한다(CSS/JS 파일을 외부에서 로드하는 플러그인이 있다면 설정하면 문제가 생길 가능성이 있다)
  • readme.html → 해커가 “readme.html“을 이용해 보안 취약점이 있는 버전을 찾고 공격할 가능성이 있고, SEO적으로도 의미 없는 페이지이므로 차단하는 것이 권고된다.

SEO 관점에서 차단이 필요한 설정들

  • /search/ → 검색 결과 페이지를 차단하는 것은 일반적인 SEO 전략으로 권고 되는 사항이다.
  • /search/*?s=는 검색 결과에 나타나는 특정 URL들을 차단하는 설정이다.

위의 차단 목록은 모두 의미 없는 페이지들로 중복 문서 이슈를 불러일으킬 수 있고, 차단을 하면 크롤링 낭비(Crawl Budget Waste)를 막을 수 있다.

검색 로봇의 크롤링 할 수 있는 페이지 수가 제한적이므로 의미 없는 파라미터 URL이 많으면 중요한 페이지가 크롤링이 되지 않을 위험이 있기 때문이다.

robots.txt 설정 주의 사항

Disallow: /noindex/는 카테고리(/category/)와 태그(/tag/) 페이지를 SEO 플러그인이나 <meta> 태그를 통해 noindex 설정한 것을 다시 robots.txt에서 한번 더 차단하는 것이므로 이중적인 차단에 해당한다.

이렇게 되면 검색엔진이 카테고리나 태그를 아예 크롤링할 수 없으므로 링크를 따라갈 수 없게 된다. 따라서 Disallow: /noindex/ 규칙으로 인하여 사이트의 내부 링크 구조가 취약해질 수도 있다. 무엇보다 <meta> 태그를 통해 noindex 를 설정한 당초 취지와도 맞지 않는다.

Disallow: /*/feed/는 모든 /feed/가 포함된 URL이 차단되어 RSS 피드를 통해 콘텐츠를 수집하는 SNS나 사이트로부터 공유 기회를 차단하는 결과가 초래된다.

RSS 피드가 검색 엔진에 중복 콘텐츠 문제를 일으키지 않으므로 굳이 robots.txt에서 차단하지 않아도 SEO에 부정적 영향은 없다.

다만, 사이트가 RSS 피드를 기반으로 콘텐츠가 자주 도용된다면, robots.txt로 차단하기 보다 RSS 피드 내에 canonical 태그를 설정하는 것이 더 효과적이다.

③ Disallow: /*?category= 명령은 “?category=“가 포함된 모든 URL의 크롤링을 차단하므로 검색엔진이 카테고리 간의 관계를 완전하게 이해하는데 어려움을 겪을 수 있고, 링크 구조를 따라가지 못할 수도 있는 문제가 생길 수 있다.

robots.txt 파일 설정 후 모니터링 지속 필요

페이지 색인이 생성되지 않는 이유

위 그림은 구글 서치콘솔에서 페이지 색인이 생성되지 않는 이유를 나타내는 이미지이다. 적절한 표준 태그가 포함된 대체 페이지가 무려 157개 인데, 거의 대부분 “?category=“가 포함된 URL이 수집되어 있었다.

이제 robots.txt 파일에 Disallow: /*?category=를 추가했으므로 더 이상 “?category=“가 포함된 URL이 증가하지는 않을 것이고, 기존에 크롤링된 글은 “robots.txt에 의해 차단됨”으로 분류될 것이다.

만약, SEO 관련 플러그인을 사용하고 있다면 “?category=“가 포함된 URL에 대해 “canonical”가 설정되어 있으므로 robots.txt 파일에서 차단할 필요는 없다. 다만 크롤링 낭비(Crawl Budget Waste)를 막기 위한 조치일 뿐이다.

(업데이트) 로봇 파일에 Disallow: /*?category= 를 추가했다가 다시 삭제 했다. 아무래도 검색엔진이 링크 구조를 이해하지 못할 수도 있다는 우려가 컸다. 향후 크롤링 낭비가 우려될 정도로 사이트가 성장한다면 그때 다시 고려하기로 했다.

구글이 제시하는 아래 “robots.txt 파일 작성 및 제출 방법” 문서와 네이버의 “robots.txt 설정하기” 문서를 참고해 보면 robots.txt 파일 검색엔진 최적화 설정 방법에 대하여 많은 인사이트를 얻을 수 있다.

워드프레스 보안 및 SEO 참고 글


댓글