모든 RSS 피드를 전역으로 비활성화하는 방법

안녕하세요,

당사 웹사이트(일부는 Discourse로 운영됨)에 대한 SEO 감사를 진행하던 중, googlebot이 RSS 피드에 상당한 크롤링 예산을 소모하고 있는 것으로 확인되었습니다. Discourse의 기본 robots.txt 파일에서 해당 URL을 차단(disallow)하도록 설정되어 있고, 해당 RSS URL에 대한 HTTP 응답에도 noindex 헤더가 전송되고 있음에도 불구하고 발생하는 현상입니다.

해당 웹사이트에서 RSS 피드를 완전히 비활성화할 수 있는 비해킹(non-hacky) 방식이 있는지 궁금합니다. 많은 사용자가 이 피드를 이용하고 있지는 않을 것으로 생각됩니다(확인해 볼 예정입니다). 하지만 여전히 이 질문은 유효합니다.

도와주시면 감사하겠습니다!

–Hugh

1개의 좋아요

현재 해당 피드를 비활성화할 체크박스는 없습니다.

nginx를 잘 다루신다면, .rss와 일치하는 location 블록을 만들어 404를 반환하도록 설정한 후, 이를 적절한 app.yml 섹션에 추가할 수 있습니다.

1개의 좋아요

404를 반환하는 것이 SEO에 오히려 더 나쁘지 않을까요?

2개의 좋아요

nginx를 사용해 차단하는 건 어떨까요?
https://serverfault.com/q/382946

Google이 실제로 해당 페이지를 가져오고 있는 건지, 아니면 URL이 Google Search Console에 "인덱싱됨이지만 robots.txt에 의해 차단됨"으로만 표시되고 있는 건가요?

RSS 피드에 noindex 헤더가 보이지 않지만, URL이 robots.txt에 의해 차단되어 있고 robots 헤더가 있는 경우, 크롤러가 robots 헤더를 절대 볼 수 없을 수 있습니다.

[curl -I 출력을 제거했습니다. GET을 사용하지 않았기 때문에 robots 헤더가 누락되어 있었기 때문입니다.]

수정: RSS 피드가 GET 요청일 때만 x-robots-noindex 헤더가 있다고 생각하여 GET 요청으로 RSS 피드를 확인해 보았습니다. 실제로 헤더는 존재하지만, GET 요청일 때만 나타납니다.

이제 제 메인 포럼에서 무엇을 했는지 기억나네요. Google Search Console에서 RSS URL이 인덱싱되었지만 차단되었다고 경고하고 있어서, robots.txt를 통해 피드 차단을 해제했습니다. 이렇게 하면 Googlebot이 URL을 가져와서 noindex 헤더를 확인하는 것을 방지할 수 있기 때문입니다. 이 조치가 경고 메시지를 해결할 것이라고 꽤 확신하지만, Googlebot이 해당 URL을 크롤링하는 것을 완전히 멈출지는 알 수 없습니다.

# Disallow: /t/*/*.rss
# Disallow: /c/*.rss

크롤러에게 RSS 피드가 존재한다고 알려주면서(link, 아래 참조) 봇이 해당 URL을 가져오려 할 때 404를 반환하는 것에 대해 조금 우려됩니다. 이는 기계가 사이트에 기술적인 문제가 있다고 판단하게 만들어, 품질 점수를 낮출 수 있습니다(검색 엔진이 품질을 판단하거나 사용자가 볼 때 사이트가 손상되었는지 여부를 결정하는 방식에 따라).

$ curl -s https://meta.discourse.org/latest | grep -i rss    
    <link rel="alternate" type="application/rss+xml" title="Latest posts" href="https://meta.discourse.org/posts.rss" />
    <link rel="alternate" type="application/rss+xml" title="Latest topics" href="https://meta.discourse.org/latest.rss" />
   ...
1개의 좋아요

네, 404 해결 방식은 선호하지 않습니다. Google에 잘못된 신호를 줄 수 있고, 제가 원하는 결과를 얻기 위해 다소 무식한 방법이기도 해서요. 제가 정말 원하는 것은 링크가 페이지에 아예 존재하지 않는 것이지, 링크가 죽은 링크(dead link)가 되는 것이 아닙니다.

질문하신 부분에 대해 말씀드리자면, 검색 콘솔에서 RSS 피드는 "'noindex' 태그로 제외됨"으로 표시되고 있습니다. 이것이 Google이 피드를 가져온 후 제외했는지를, 아니면 가져오기 전에 제외했는지는 명확하지 않습니다. 후자의 경우 크롤 예산에 미치는 영향은 상대적으로 적을 가능성이 높습니다.

nginx 로그에서 몇 개의 RSS URL을 가져오고 있는지에 대한 정보를 찾을 수 있을 것입니다. 방금 제 로그를 확인해 보니 Googlebot이 RSS 피드를 크롤링하고 있었는데, 이는 제가 robots.txt에서 Googlebot을 차단 해제했기 때문에 그렇게 요청한 것입니다.