# Content Signals (contentsignals.org / draft-romm-aipref-contentsignals): # declared usage preferences for this site's content. Deliberately permissive on all three. # ai-train=yes -> may be used to train AI/ML models. Note this brings us no traffic and no # citations (training data is baked into model weights, not linked back); # it is allowed as an open-by-default stance, not as an acquisition channel. # search=yes -> may be indexed for search results (never disable: this is our SEO) # ai-input=yes -> may be used as input/grounding for AI-generated answers. This is the one # that actually drives visits: real-time assistants read the live page and # cite us with a link, so prices/stock are always current. # Consistent with the ChatGPT-User / Claude-User / Perplexity-User groups below, which are # the real-time browsing agents (not the training crawlers). # Applies to the User-agent group it is declared in (here: all crawlers). User-agent: * Content-Signal: ai-train=yes, search=yes, ai-input=yes Allow: / Disallow: /*?*srsltid= Disallow: /api/* # Search results pages: low-value, effectively infinite URLs. Route slugs are translated per # locale, so a bare "/search*" only ever matched the en-* domains — every other region served # /pesquisa, /buscar, /recherche or /onderzoek and was crawled freely. One rule per slug so the # same file works on every regional deployment. # # These rules are root-anchored, which only covers each region's DEFAULT locale: a non-default # locale is served under a 2-letter path prefix (routes/CLAUDE.md, "Locale prefixing"), so # /ca/cerca was crawled freely while root /cerca — which exists on no deployment — was blocked. # Per config/locales.php the only non-default locales active in production are ca-es (iservices.es), # nl-be (iservices.be) and en-nl (iservices.nl); every other region serves its default locale # unprefixed and its en-* locale is backoffice_only, injected on local/demo boxes only. Hence # exactly three prefixed rules. Do NOT collapse them into a leading wildcard — see /recon below. Disallow: /pesquisa* # pt-pt Disallow: /buscar* # es-es, es-ic Disallow: /cerca* # ca-es (root form only reachable on local/demo) Disallow: /recherche* # fr-fr, fr-be Disallow: /onderzoek* # nl-nl, nl-be Disallow: /search* # en-* (root form only reachable on local/demo) Disallow: /ca/cerca* # ca-es on iservices.es Disallow: /nl/onderzoek* # nl-be on iservices.be Disallow: /en/search* # en-nl on iservices.nl # NOT blocked: the comparator (/comparar?products=a,b). Its URLs are combinatorial in theory, # but nothing in the rendered HTML links to them — combinations are built client-side from # localStorage and navigated via window.location, so crawlers have no path to discover them. # Revisit only if Search Console starts reporting indexed ?products= URLs. User-agent: ChatGPT-User Allow: / User-agent: Claude-User Allow: / User-agent: Perplexity-User Allow: / Sitemap: https://iservices.es/sitemap.xml