# robots.txt — citychurchtallahassee.com # Purpose: stop crawling of the infinite URL space generated by # The Events Calendar (pagination x tribe-bar-date x ical feeds) # and limit AI bots that were consuming ~50% of server resources. # --------------------------------------------------------------- # 1. General rules for all bots # --------------------------------------------------------------- User-agent: * # WordPress core Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /wp-login.php Disallow: /xmlrpc.php Disallow: /wp-json/ Disallow: /?author= Disallow: /author/ # The Events Calendar — infinite URL trap. # # What stays crawlable (the pages that actually rank + the navigation path): # /events/ main landing page (default view = List) # /events/list/ clean list, page 1 # /events/list/page/2..5/ the "next" chain, including its # ?tribe-bar-date= parameter # /events/category// all 10 category landing pages # /event// all 199 individual events # # IMPORTANT: the site's own "next" button emits # /events/list/page/2/?tribe-bar-date=2026-08-05 # so ?tribe-bar-date= is NOT junk — it is the real pagination chain, with # today's date injected automatically. A blanket Disallow on that parameter # would cut the crawl path to every event past page 1. # # So we block deep pagination (page 6+) instead, where events are 6+ months # out and have no search value. Log hits per page: p2=128, p3=109, p4=94, # p5=83 (real sequential navigation), then a long flat tail out to page 21. # Duplicate calendar views of the same events. Disallow: /events/month/ Disallow: /events/today/ # Deep pagination: pages 6 and up are blocked, pages 1-5 stay open. # Every blocked page number is written out in full — no wildcards and no # Allow/Disallow precedence tricks, because those two mechanisms interact # badly with the ?tribe-bar-date= query string the "next" button appends. # Pages 22-29 are listed too, in case the calendar grows. Disallow: /events/list/page/6/ Disallow: /events/list/page/7/ Disallow: /events/list/page/8/ Disallow: /events/list/page/9/ Disallow: /events/list/page/10/ Disallow: /events/list/page/11/ Disallow: /events/list/page/12/ Disallow: /events/list/page/13/ Disallow: /events/list/page/14/ Disallow: /events/list/page/15/ Disallow: /events/list/page/16/ Disallow: /events/list/page/17/ Disallow: /events/list/page/18/ Disallow: /events/list/page/19/ Disallow: /events/list/page/20/ Disallow: /events/list/page/21/ Disallow: /events/list/page/22/ Disallow: /events/list/page/23/ Disallow: /events/list/page/24/ Disallow: /events/list/page/25/ Disallow: /events/list/page/26/ Disallow: /events/list/page/27/ Disallow: /events/list/page/28/ Disallow: /events/list/page/29/ # Same for category archives (10 categories, one wildcard for the slug only). Disallow: /events/category/*/page/6/ Disallow: /events/category/*/page/7/ Disallow: /events/category/*/page/8/ Disallow: /events/category/*/page/9/ Disallow: /events/category/*/page/10/ Disallow: /events/category/*/page/11/ Disallow: /events/category/*/page/12/ Disallow: /events/category/*/page/13/ Disallow: /events/category/*/page/14/ Disallow: /events/category/*/page/15/ Disallow: /events/category/*/page/16/ Disallow: /events/category/*/page/17/ Disallow: /events/category/*/page/18/ Disallow: /events/category/*/page/19/ Disallow: /events/category/*/page/20/ Disallow: /events/category/*/page/21/ Disallow: /*?eventDisplay= Disallow: /*&eventDisplay= Disallow: /*?eventDate= Disallow: /*&eventDate= Disallow: /*?post_type=tribe_events # Calendar feeds (1,144 requests in 12h) Disallow: /*ical=1 Disallow: /*outlook-ical=1 Disallow: /*?ical Disallow: /*&ical # Cache / optimization parameters — should never be indexed Disallow: /*?nowprocket= Disallow: /*&nowprocket= Disallow: /*?no_optimize= Disallow: /*?wpr_imagedimensions= # Internal search and other parasitic parameters Disallow: /*?s= Disallow: /*?format= Disallow: /*&format= Disallow: /*?replytocom= Disallow: /*?add-to-cart= # RSS feeds (canonical pages remain indexable) Disallow: /comments/feed/ Disallow: /*/feed/ # Explicitly allow assets — Google needs them to render pages Allow: /wp-content/uploads/ Allow: /wp-includes/js/ Allow: /wp-content/themes/ Allow: /wp-content/plugins/ Allow: /*.css$ Allow: /*.js$ Allow: /*.jpg$ Allow: /*.jpeg$ Allow: /*.png$ Allow: /*.webp$ Allow: /*.gif$ Allow: /*.svg$ # --------------------------------------------------------------- # 2. AI bots — full block # (ClaudeBot + GPTBot generated 1,592 req/12h and got 220 x 429) # --------------------------------------------------------------- User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Disallow: / User-agent: OAI-SearchBot Disallow: / User-agent: ClaudeBot Disallow: / User-agent: Claude-User Disallow: / User-agent: Claude-SearchBot Disallow: / User-agent: anthropic-ai Disallow: / User-agent: meta-externalagent Disallow: / User-agent: FacebookBot Disallow: / User-agent: Applebot-Extended Disallow: / User-agent: Bytespider Disallow: / User-agent: PerplexityBot Disallow: / User-agent: Perplexity-User Disallow: / User-agent: CCBot Disallow: / User-agent: Google-Extended Disallow: / User-agent: Amazonbot Disallow: / User-agent: cohere-ai Disallow: / User-agent: Diffbot Disallow: / User-agent: Omgilibot Disallow: / User-agent: ImagesiftBot Disallow: / User-agent: Timpibot Disallow: / # --------------------------------------------------------------- # 3. SEO bots / commercial scrapers — no value for this site # --------------------------------------------------------------- User-agent: SemrushBot Disallow: / User-agent: AhrefsBot Disallow: / User-agent: DotBot Disallow: / User-agent: MJ12bot Disallow: / User-agent: DataForSeoBot Disallow: / User-agent: BLEXBot Disallow: / User-agent: Barkrowler Disallow: / User-agent: PetalBot Disallow: / User-agent: SeekportBot Disallow: / User-agent: serpstatbot Disallow: / User-agent: MegaIndex Disallow: / User-agent: ZoominfoBot Disallow: / # --------------------------------------------------------------- # 4. Legitimate search engines — keep access, but with throttling # and the same calendar restrictions # --------------------------------------------------------------- # NOTE: a user-agent block does NOT inherit from "User-agent: *" — the most # specific matching block replaces it entirely. So every rule these crawlers # need has to be repeated here, including the WordPress core ones. User-agent: bingbot Crawl-delay: 10 Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /wp-login.php Disallow: /xmlrpc.php Disallow: /wp-json/ Disallow: /author/ Disallow: /events/month/ Disallow: /events/today/ Disallow: /events/list/page/6/ Disallow: /events/list/page/7/ Disallow: /events/list/page/8/ Disallow: /events/list/page/9/ Disallow: /events/list/page/10/ Disallow: /events/list/page/11/ Disallow: /events/list/page/12/ Disallow: /events/list/page/13/ Disallow: /events/list/page/14/ Disallow: /events/list/page/15/ Disallow: /events/list/page/16/ Disallow: /events/list/page/17/ Disallow: /events/list/page/18/ Disallow: /events/list/page/19/ Disallow: /events/list/page/20/ Disallow: /events/list/page/21/ Disallow: /events/category/*/page/6/ Disallow: /events/category/*/page/7/ Disallow: /events/category/*/page/8/ Disallow: /events/category/*/page/9/ Disallow: /events/category/*/page/10/ Disallow: /events/category/*/page/11/ Disallow: /events/category/*/page/12/ Disallow: /*ical=1 Disallow: /*outlook-ical=1 Disallow: /*?nowprocket= Disallow: /*?s= User-agent: Applebot Crawl-delay: 10 Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Disallow: /wp-login.php Disallow: /xmlrpc.php Disallow: /author/ Disallow: /events/month/ Disallow: /events/today/ Disallow: /events/list/page/6/ Disallow: /events/list/page/7/ Disallow: /events/list/page/8/ Disallow: /events/list/page/9/ Disallow: /events/list/page/10/ Disallow: /events/list/page/11/ Disallow: /events/list/page/12/ Disallow: /*ical=1 Disallow: /*outlook-ical=1 Disallow: /*?nowprocket= User-agent: YandexBot Crawl-delay: 20 Disallow: /wp-admin/ Disallow: /wp-login.php Disallow: /xmlrpc.php Disallow: /author/ Disallow: /events/month/ Disallow: /events/today/ Disallow: /events/list/page/6/ Disallow: /events/list/page/7/ Disallow: /events/list/page/8/ Disallow: /events/list/page/9/ Disallow: /events/list/page/10/ Disallow: /events/list/page/11/ Disallow: /events/list/page/12/ Disallow: /*ical=1 Disallow: /*outlook-ical=1 Disallow: /*?nowprocket= # --------------------------------------------------------------- # 5. Sitemap # --------------------------------------------------------------- Sitemap: https://www.citychurchtallahassee.com/sitemap.xml