# Allow AdMob crawler to find app-ads.txt specifically User-agent: Google-adstxt Disallow: User-agent: Mediapartners-Google Disallow: # Googlebot: only index static pages, not the Flutter SPA User-agent: Googlebot Allow: /$ Allow: /blog/ Allow: /legal/ Allow: /about/ Allow: /contacto/ Allow: /jugadores/ Allow: /propietarios/ Allow: /administradores/ Allow: /ios/ Allow: /en/$ Allow: /en/blog/ Allow: /en/legal/ Allow: /en/about/ Allow: /en/contact/ Allow: /en/players/ Allow: /en/residents/ Allow: /en/managers/ Allow: /en/ios/ # __US_ALLOW_START__ Allow: /en/athletics-tracks/ Allow: /en/badminton-courts/ Allow: /en/basketball-courts/ Allow: /en/bowling-alleys/ Allow: /en/climbing-gyms/ Allow: /en/community-sports-spaces/ Allow: /en/football-pitches/ Allow: /en/fronton-courts/ Allow: /en/gyms/ Allow: /en/handball-courts/ Allow: /en/hockey-venues/ Allow: /en/leisure-centres/ Allow: /en/martial-arts-gyms/ Allow: /en/padel-courts/ Allow: /en/petanque-courts/ Allow: /en/pickleball-courts/ Allow: /en/shooting-ranges/ Allow: /en/skateparks/ Allow: /en/soccer-fields/ Allow: /en/sports-centers/ Allow: /en/squash-courts/ Allow: /en/swimming-pools/ Allow: /en/table-tennis-venues/ Allow: /en/tennis-courts/ Allow: /en/volleyball-courts/ Allow: /en/water-sports-centers/ Allow: /en/water-sports-centres/ Allow: /sitemap-cities-us.xml Allow: /sitemap-cities-us/ Allow: /sitemap-venues-us.xml Allow: /sitemap-venues-us/ Allow: /sitemap-cities-gb.xml Allow: /sitemap-cities-gb/ Allow: /sitemap-venues-gb.xml Allow: /sitemap-venues-gb/ Allow: /sitemap-cities-ie.xml Allow: /sitemap-cities-ie/ Allow: /sitemap-venues-ie.xml Allow: /sitemap-venues-ie/ # __US_ALLOW_END__ # Carril B2B (venta a gestores: verticales /software-gestion-* y funciones # /funciones/*, con sus equivalentes /en/ y /fr/). Las líneas entre los # marcadores las GENERA build-blog.mjs desde workers/seo-worker/src/b2b/registry.js, # que es la misma fuente de la que salen las páginas y el sitemap: una página # nueva en el registro se declara aquí sola, y una BLOQUEADA (declarada pero sin # producto, hoy la piscina) no aparece — anunciar una URL que cae al fallback de # la SPA es invitar a rastrear un noindex. No editar a mano entre los marcadores. # __B2B_ALLOW_START__ Allow: /en/features/access-control Allow: /en/features/classes-and-capacity Allow: /en/features/club-website Allow: /en/features/integrations Allow: /en/features/memberships Allow: /en/features/online-booking Allow: /en/features/payments Allow: /en/gym-management-software Allow: /en/leisure-centre-management-software Allow: /en/padel-club-management-software Allow: /en/sports-academy-management-software Allow: /en/tennis-club-management-software Allow: /fr/fonctionnalites/adhesions Allow: /fr/fonctionnalites/controle-acces Allow: /fr/fonctionnalites/cours-et-jauge Allow: /fr/fonctionnalites/integrations Allow: /fr/fonctionnalites/paiements Allow: /fr/fonctionnalites/reservations Allow: /fr/fonctionnalites/site-du-club Allow: /fr/logiciel-gestion-centre-sportif Allow: /fr/logiciel-gestion-club-padel Allow: /fr/logiciel-gestion-club-tennis Allow: /fr/logiciel-gestion-ecole-de-sport Allow: /fr/logiciel-gestion-salle-de-sport Allow: /funciones/clases-y-aforo Allow: /funciones/cobros Allow: /funciones/control-de-acceso Allow: /funciones/integraciones Allow: /funciones/reservas Allow: /funciones/socios-y-cuotas Allow: /funciones/web-del-club Allow: /software-gestion-club-padel Allow: /software-gestion-club-tenis Allow: /software-gestion-escuela-deportiva Allow: /software-gestion-gimnasio Allow: /software-gestion-polideportivo # __B2B_ALLOW_END__ Allow: /sitemap.xml Allow: /sitemap-pages.xml Allow: /sitemap-cities.xml Allow: /sitemap-matches.xml Allow: /sitemap-venues.xml Allow: /sitemap-venues/ Allow: /sitemap-clubs.xml Allow: /og/ Allow: /ads.txt Allow: /app-ads.txt # SSR public pages — match/venue/club/hyper-local directory. Allow: /m/ Allow: /v/ Allow: /c/ Allow: /pistas-padel/ Allow: /pistas-tenis/ Allow: /pistas-baloncesto/ Allow: /pistas-futbol/ Allow: /pistas-voleibol/ Allow: /salas-comunitarias/ Allow: /gimnasios/ Allow: /piscinas/ Allow: /polideportivos/ Allow: /frontones/ Allow: /tenis-de-mesa/ Allow: /pistas-petanca/ Allow: /rocodromos/ Allow: /pistas-atletismo/ Allow: /pistas-squash/ # France (/fr/) tree — static pages + verticals + sitemaps. The lines below the # marker are GENERATED at build time by build-blog.mjs from the SAME # shared/sports.json vertical list that feeds the Caddy handles (SEO-FR-A3 / # CD-1), so a vertical can never get a Caddy handle without its robots Allow. # Do not hand-edit between the markers. # __FR_ALLOW_START__ Allow: /fr/$ Allow: /fr/legal/ Allow: /fr/about/ Allow: /fr/contact/ Allow: /fr/joueurs/ Allow: /fr/proprietaires/ Allow: /fr/gestionnaires/ Allow: /fr/ressources/ Allow: /fr/ios/ Allow: /fr/recherche Allow: /fr/bases-nautiques/ Allow: /fr/bowlings/ Allow: /fr/complexes-sportifs/ Allow: /fr/courts-de-squash/ Allow: /fr/courts-de-tennis/ Allow: /fr/frontons/ Allow: /fr/piscines/ Allow: /fr/pistes-d-athletisme/ Allow: /fr/salles-communautaires/ Allow: /fr/salles-d-escalade/ Allow: /fr/salles-de-sport/ Allow: /fr/salles-de-sports-de-combat/ Allow: /fr/skateparks/ Allow: /fr/stands-de-tir/ Allow: /fr/tennis-de-table/ Allow: /fr/terrains-de-badminton/ Allow: /fr/terrains-de-basket/ Allow: /fr/terrains-de-football/ Allow: /fr/terrains-de-handball/ Allow: /fr/terrains-de-hockey/ Allow: /fr/terrains-de-padel/ Allow: /fr/terrains-de-petanque/ Allow: /fr/terrains-de-volley/ Allow: /sitemap-cities-fr.xml Allow: /sitemap-cities-fr/ Allow: /sitemap-venues-fr.xml Allow: /sitemap-venues-fr/ # __FR_ALLOW_END__ Disallow: /home Disallow: /settings Disallow: /bookings Disallow: /courts Disallow: /clubs Disallow: /tournaments Disallow: /league Disallow: /play Disallow: /notifications Disallow: /profile Disallow: /venues # /instalaciones-publicas NO se bloquea A PROPOSITO: es una ruta retirada que el # origen responde con 301 (a /search o al centro concreto). Un Disallow impide la # descarga, asi que Google no llegaria a VER ese 301 y las ~14K URLs indexadas se # quedarian congeladas en "Bloqueada por robots.txt" en vez de consolidarse. Para # sacar una URL del indice hay que PERMITIR su rastreo y darle la redireccion. Disallow: /messages Disallow: /login Disallow: /register # AI crawlers (training & AI search): WELCOME — we want to be cited. But please # pace yourselves. Crawl-delay is advisory; we ALSO enforce ~30 req/min per # (crawler, subnet) at the origin and answer 429 + Retry-After when you exceed # it (we honor backoff in return — see https://bookrgo.app/bot). No paths # blocked for the crawlers in THIS group. User-agent: GPTBot User-agent: OAI-SearchBot User-agent: ChatGPT-User User-agent: ClaudeBot User-agent: Claude-Web User-agent: anthropic-ai User-agent: PerplexityBot User-agent: Perplexity-User User-agent: Applebot-Extended User-agent: Google-Extended User-agent: CCBot Crawl-delay: 2 # Crawlers we do NOT serve. Measured over 30 days (Aug-2026): these three cost # 2.4M origin requests and returned ZERO sessions — no citations, no clicks, no # referrals. The group above stays welcome precisely because it does send # people back (ChatGPT, Perplexity). This is a cost decision, not a licensing # one: ask us at hola@bookrgo.app if that changes on your side. # # The origin also answers 403 to these User-Agents (bot_rules), so honoring # this group is strictly cheaper for you than ignoring it. Bytespider was # already blocked at the origin — listing it here just makes robots.txt tell # the truth about it. User-agent: meta-externalagent User-agent: Amazonbot User-agent: Bytespider Disallow: / # Same decision, four more (Aug-2026). Measured on 16-Aug: these were the # heaviest clients hitting this origin that day, and none of them is a search # engine that sends us readers or an AI that cites its sources. Over the whole # life of the site, exactly one external host has ever produced a registered # user: google.com. So the trade we make with the group above — you crawl, you # send people back — has no counterpart here. # # Two neighbours we deliberately did NOT include: # - facebookexternalhit is NOT blocked. It builds the link previews when # someone shares a venue on Facebook, Instagram or WhatsApp, and that is a # person sharing, not a crawler harvesting. # - Amazonbot is in the group above; Amzn-SearchBot is a different UA and is # listed here on its own merits. # # probe-image-size is not a crawler at all: it reads the header of an image to # learn its dimensions and then aborts the connection. Our aerial photos are # generated on demand, so every one of those cost us the full render and got # thrown away — 18,867 requests in a single day against ~1,000 the days before. # # The origin also answers 403 to these User-Agents (bot_rules). User-agent: meta-webindexer User-agent: Amzn-SearchBot User-agent: SleepBot User-agent: probe-image-size Disallow: / # Everyone else: no paths blocked, but please pace yourselves. # # This group is where every crawler we haven't met yet lands, and in practice # that is most of the traffic: on 16-Aug-2026 the three heaviest clients on this # origin were all here, none of them named above. So the pacing rule belongs in # THIS group, not only in the AI one — a rate limit that only the crawlers we # already listed can see is a rate limit for the well-behaved. # # Crawl-delay is advisory and Googlebot ignores it (Googlebot has its own group # above and is not affected by this one; use Search Console to adjust its rate). # Bing, Yandex and most smaller crawlers do honor it. Independently of what you # do with this line, the origin enforces ~30 req/min per (crawler, subnet) and # answers 429 + Retry-After — see https://bookrgo.app/bot. Honoring the delay is # strictly cheaper for you than collecting 429s. User-agent: * Crawl-delay: 5 Disallow: Sitemap: https://bookrgo.app/sitemap.xml