<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>infrastruttura WordPress - Web Design | Creazione Siti Internet</title>
	<atom:link href="https://www.mrtux.it/tag/infrastruttura-wordpress/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrtux.it</link>
	<description>Sviluppo Siti Web - Assistenza WordPress</description>
	<lastBuildDate>Sat, 27 Jun 2026 09:34:09 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://www.mrtux.it/wp-content/uploads/2022/06/favicon-150x150.png</url>
	<title>infrastruttura WordPress - Web Design | Creazione Siti Internet</title>
	<link>https://www.mrtux.it</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress PHP thread 2026: come i bot AI li stanno esaurendo</title>
		<link>https://www.mrtux.it/php-thread-exhaustion-wordpress-bot-ai-2026</link>
					<comments>https://www.mrtux.it/php-thread-exhaustion-wordpress-bot-ai-2026#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Sat, 27 Jun 2026 09:34:07 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI bot]]></category>
		<category><![CDATA[bot traffic]]></category>
		<category><![CDATA[infrastruttura WordPress]]></category>
		<category><![CDATA[performance WordPress]]></category>
		<category><![CDATA[PHP thread]]></category>
		<category><![CDATA[WooCommerce performance]]></category>
		<category><![CDATA[WordPress hosting]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/wordpress-php-thread-2026-come-i-bot-ai-li-stanno-esaurendo</guid>

					<description><![CDATA[Il 2026 dei bot AI non è più una storia di crawler o SEO: è una storia di capacity planning. Quando ClaudeBot fa 3,75 milioni di add-to-cart in 24 ore, i PHP thread si esauriscono e i clienti reali vedono 504. Ecco come gestire la crisi.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se hai un sito WordPress o WooCommerce che ha cominciato a restituire 504 error improvvisi nel 2026 senza un picco di traffico reale, la causa non è il tuo hosting, non è un attacco DDoS, non è Google: è quasi certamente un singolo bot AI che sta riempiendo il tuo pool di PHP thread con richieste dinamiche ad alta durata. Non è una storia di SEO, non è una storia di sicurezza informatica: è una storia di capacity planning che nessuno aveva previsto prima dell&#x27;esplosione dei crawler AI.</p>



<p class="wp-block-paragraph">In <a href="https://www.mrtux.it/bot-wordpress-infrastruttura-php-thread-riservati" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress: il vero costo dei thread PHP riservati nel 2026</a> abbiamo iniziato a mettere a fuoco il problema dei thread come risorsa scarsa. Qui costruiamo sopra quel ragionamento un framework operativo: come misurare, come diagnosticare, come intervenire quando un singolo bot AI mette in ginocchio un e-commerce in pieno giorno.</p>



<h2 class="wp-block-heading">Perché il 2026 è diverso dal 2024</h2>



<p class="wp-block-paragraph">Fino al 2024 il traffico bot era un fastidio misurabile in percentuale. Googlebot passava, indicizzava, se ne andava. I bot malevoli colpivano login e wp-admin. Le soluzioni esistenti — WAF, robots.txt, captcha — bastavano perché la stragrande maggioranza del traffico era umana, leggera, e per lo più servita da cache.</p>



<p class="wp-block-paragraph">Dal 2025 la composizione è cambiata radicalmente. Secondo i dati pubblicati da Kinsta su 10 miliardi di richieste analizzate, GPTBot è cresciuto del 305% tra maggio 2024 e maggio 2025, e il rapporto di visite AI bot sul totale è passato da 1 su 200 a 1 su 31. Sulle reti Cloudflare la percentuale di richieste HTML da AI crawler è arrivata al 4,2% a fine 2025, con picchi del 6,4% a giugno.</p>



<p class="wp-block-paragraph">Ma il numero assoluto non racconta il punto. Il punto è che questi crawler AI:</p>



<ul class="wp-block-list"><li>non si comportano come Googlebot (che indicizza e se ne va);</li><li>non si comportano come bot malevoli (che cercano wp-login);</li><li>non rispettano i rate limit impliciti del robots.txt;</li><li>colpiscono preferenzialmente endpoint dinamici che richiedono PHP + database.</li></ul>



<p class="wp-block-paragraph">Quando un crawler AI incontra un endpoint uncached come <code>/cart</code>, <code>/checkout</code>, <code>?add-to-cart=1234</code>, <code>?s=ricerca</code>, ogni richiesta diventa una nuova elaborazione PHP completa. Non c&#x27;è HTML statico da servire. Non c&#x27;è cache LSCache o WP Rocket che tenga. Il thread PHP viene occupato per 200-500 millisecondi (più a lungo se la pagina è complessa), e finché non rilascia non può servire nessun altro.</p>



<h2 class="wp-block-heading">Anatomia di una richiesta dinamica su WooCommerce</h2>



<p class="wp-block-paragraph">Per capire perché il 2026 è una categoria nuova di problema, devi capire cosa succede davvero sul tuo server quando un bot AI colpisce il carrello di un WooCommerce.</p>



<p class="wp-block-paragraph">Una richiesta <code>POST /cart?add-to-cart=1234</code> fa, in ordine:</p>



<ol class="wp-block-list"><li>Avvia una sessione WooCommerce (scrittura su <code>wp_woocommerce_sessions</code> o su Redis se configurato).</li><li>Riserva un PHP-FPM worker dal pool, tipicamente <code>pm.max_children</code> tra 10 e 60 su hosting condiviso, 100-300 su managed.</li><li>Carica il core WordPress + plugin attivi + theme functions.php — circa 80-150 MB di RAM.</li><li>Esegue la query prodotto (<code>SELECT * FROM wp_posts WHERE ID=1234</code>) con i suoi meta associati.</li><li>Aggiorna lo stato del carrello in sessione.</li><li>Restituisce una redirect HTTP 302 al cliente.</li></ol>



<p class="wp-block-paragraph">Tutto questo per una richiesta che non convertirà mai in un ordine, perché arriva da un bot che sta solo enumerando URL. E mentre quel worker è occupato, non può servire nessun altro visitatore.</p>



<p class="wp-block-paragraph">Su un hosting con 30 PHP-FPM worker, bastano 30 richieste dinamiche simultanee da bot per saturare completamente il pool. Il visitatore umano numero 31 entra in coda. Se la coda si riempie (<code>pm.backlog_limit</code>), Nginx restituisce 502 o 502/504. Il cliente vede una pagina bianca durante il checkout e abbandona il carrello. Tu vedi nel log <code>connect() failed (111: Connection refused) while connecting to upstream</code> e pensi che sia un problema del tuo hosting provider.</p>



<p class="wp-block-paragraph">Non lo è. È un problema di capacity planning, e fino al 2024 non esisteva perché il volume di traffico dinamico non automatizzato era troppo basso per saturare i pool.</p>



<h2 class="wp-block-heading">Il caso ClaudeBot che ha generato 3,75 milioni di add-to-cart</h2>



<p class="wp-block-paragraph">Kinsta ha pubblicato un dato che merita di essere raccontato per intero: un singolo bot, identificato come ClaudeBot, ha generato 3,75 milioni di richieste <code>?add-to-cart=</code> su un singolo store WooCommerce gestito in 24 ore. Fanno circa una richiesta ogni 23 millisecondi, 24 ore su 24, 7 giorni su 7.</p>



<p class="wp-block-paragraph">Facciamo i conti. Una richiesta add-to-cart tipo occupa un PHP-FPM worker per circa 300 millisecondi (start sessione + query prodotto + scrittura carrello). In 24 ore ClaudeBot ha quindi consumato:</p>



<ul class="wp-block-list"><li>3.750.000 × 0,3 secondi = 1.125.000 secondi-worker.</li><li>Su un pool di 50 PHP-FPM worker (un managed hosting medio), il pool è stato saturato al 100% per 1.125.000 / 50 = 22.500 secondi, pari a 6,25 ore di lavoro &quot;pieno&quot; solo da quel singolo bot.</li></ul>



<p class="wp-block-paragraph">Ma la distribuzione non è uniforme: quando ClaudeBot ha colpito in momenti di basso traffico umano (le 3 di notte, ad esempio) il pool è stato saturato al 100% solo per il bot, e i visitatori diurni non ne hanno risentito. Quando ha colpito in momenti di picco (le 12 o le 19, fasce di punta di un e-commerce), il 20-40% della capacità del pool è stata dirottata su richieste bot, allungando i tempi di risposta del checkout da 1,2 secondi a 4-8 secondi — esattamente il range in cui il tasso di abbandono carrello sale dal 30% al 70%.</p>



<p class="wp-block-paragraph">C&#x27;è un secondo dato ancora più inquietante: un pattern di loop non malevolo ma &quot;vibe coded male&quot; ha generato 550 milioni di richieste su 30 giorni per un singolo store, giustificando da solo una regola di mitigazione dedicata nell&#x27;infrastruttura Kinsta. Non è un attacco, non è malware: è una persona che ieri non sapeva cosa stesse facendo e oggi ha fatto vibrare un bot e lo ha lasciato andare. Suo malgrado, è la causa principale del tuo 504.</p>



<h2 class="wp-block-heading">Il framework operativo: la &quot;PHP thread economy&quot;</h2>



<p class="wp-block-paragraph">Per gestire questa categoria di problema servono cinque passi, in ordine. Non sono alternativi, sono cumulativi.</p>



<h3 class="wp-block-heading">Misura il tuo PHP-FPM pool reale, non quello dichiarato</h3>



<p class="wp-block-paragraph">Il primo errore è pensare che il tuo hosting abbia &quot;PHP illimitati&quot; perché il pannello lo dichiara. La realtà è:</p>



<pre class="wp-block-code"><code># controlla il pool effettivo di PHP-FPM
ssh tuo_server 'cat /etc/php/*/fpm/pool.d/www.conf | grep -E "pm.max_children|pm.start_servers|pm.min_spare_servers|pm.max_spare_servers"'</code></pre>



<p class="wp-block-paragraph">Annota <code>pm.max_children</code>: è il numero massimo di PHP-FPM worker attivi. Su hosting condiviso è spesso 10-20. Su managed è 50-300. Su VPS è quello che hai configurato tu, spesso male.</p>



<p class="wp-block-paragraph">Poi misura il consumo reale:</p>



<pre class="wp-block-code"><code># script: monitor php-fpm status via curl + parsing JSON
curl -s "YOUR_PHP_FPM_STATUS_ENDPOINT" |   python3 -c "import json,sys; d=json.load(sys.stdin);   print(f"active={d['active processes']} idle={d['idle processes']} total={d['total processes']} max_active={d['max active processes']} max_children_reached={d['max children reached']}")"</code></pre>



<p class="wp-block-paragraph">L&#x27;output ti dice <code>max children reached</code>: se è maggiore di zero nell&#x27;ultima ora, hai già saturo il pool almeno una volta. Questo è il tuo problema.</p>



<h3 class="wp-block-heading">Identifica i 5 endpoint dinamici più colpiti dai bot</h3>



<p class="wp-block-paragraph">Non tutti gli endpoint sono uguali. Su un WooCommerce tipico, il 90% del danno arriva da:</p>



<pre class="wp-block-code"><code># analizza i log Nginx per endpoint dinamici
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -30 |   grep -E "add-to-cart|/cart|/checkout|/my-account|/?s=|/?wc-api="</code></pre>



<p class="wp-block-paragraph">Se <code>?add-to-cart=</code> è in cima alla classifica con centinaia di migliaia di richieste al giorno e il tuo negozio riceve solo 500 ordini reali al giorno, hai il problema.</p>



<h3 class="wp-block-heading">Calcola il tuo &quot;throughput dinamico sostenibile&quot;</h3>



<p class="wp-block-paragraph">Ecco la formula che ti serve: <code>throughput_max = max_children / durata_media_richiesta_dinamica</code>.</p>



<p class="wp-block-paragraph">Con <code>max_children = 30</code> e <code>durata_media_dinamica = 0,4s</code> (carrello + checkout tipici):</p>



<pre class="wp-block-code"><code># esempio codice
throughput_max = 30 / 0,4 = 75 richieste dinamiche/secondo</code></pre>



<p class="wp-block-paragraph">Questo è il tuo tetto. Qualsiasi combinazione di bot + visitatori umani che supera 75 richieste/secondo verso endpoint dinamici manderà in saturazione il pool. Su un e-commerce medio con 500 ordini/giorno, significa che bastano 50 bot aggressivi per esaurire la capacità di servire ordini reali nei momenti di punta.</p>



<h3 class="wp-block-heading">Implementa le 4 leve in ordine di priorità</h3>



<p class="wp-block-paragraph">Una volta misurato, agisci in quest&#x27;ordine:</p>



<ol class="wp-block-list"><li><strong>Edge cache differenziata per AI bot</strong>: Cloudflare o Varnish possono servire una versione cached delle pagine dinamiche solo ai bot AI, con TTL breve (6 ore). Implementazione Nginx:</li></ol>



<pre class="wp-block-code"><code># in nginx.conf o nella conf del sito
map $http_user_agent $is_ai_bot {
    default 0;
    ~*GPTBot 1;
    ~*ClaudeBot 1;
    ~*PerplexityBot 1;
    ~*OAI-SearchBot 1;
    ~*CCBot 1;
    ~*Google-Extended 1;
    ~*Bytespider 1;
}

# imposta TTL differenziato
proxy_cache_valid 200 6h if $is_ai_bot = 1;
proxy_cache_valid 200 1h if $is_ai_bot = 0;</code></pre>



<p class="wp-block-paragraph">L&#x27;AI bot riceve una versione cached della pagina carrello (utile per il suo scopo di retrieval), il visitatore umano riceve sempre la versione dinamica reale.</p>



<ol class="wp-block-list"><li><strong>Rate limiting su endpoint dinamici specifici</strong>:</li></ol>



<pre class="wp-block-code"><code># limita solo i bot dinamici, non gli umani
limit_req_zone $binary_remote_addr zone=dyn_bot:10m rate=10r/s;
location ~* ^/(cart|checkout|my-account|wc-api/) {
    limit_req zone=dyn_bot burst=20 nodelay;
    limit_req_status 429;
}</code></pre>



<p class="wp-block-paragraph">Un bot che tenta 50 add-to-cart al secondo riceverà 429 dopo i primi 30, e il tuo pool PHP sarà salvo.</p>



<ol class="wp-block-list"><li><strong>Kill switch su loop</strong>: se identifichi un IP che genera più di 100 richieste dinamiche in 60 secondi, bloccalo per 1 ora.</li></ol>



<pre class="wp-block-code"><code># fail2ban filter per WooCommerce bot loop
cat &gt; /etc/fail2ban/filter.d/woocommerce-bot-loop.conf &lt;&lt; 'EOF'
[Definition]
failregex = ^&lt;HOST&gt; .* "(GET|POST) /(cart|checkout|my-account|.*add-to-cart=).*"
ignoreregex =
EOF</code></pre>



<ol class="wp-block-list"><li><strong>PHP-FPM tuning mirato</strong>: se dopo le 3 precedenti sei ancora al limite, aumenta <code>pm.max_children</code> ma SOLO se il server ha RAM disponibile. Ogni worker PHP consuma 80-150 MB. Se il server ha 4 GB di RAM e 20 worker, puoi arrivare a 30-35. Oltre comincerai a swappare e il degrado sarà peggiore.</li></ol>



<h3 class="wp-block-heading">Monitora e allerta proattivamente</h3>



<p class="wp-block-paragraph">Il framework non serve a nulla senza monitoring continuo. Lo script che segue gira via cron ogni 5 minuti e ti avvisa su Telegram (o email) quando il pool si avvicina alla saturazione:</p>



<pre class="wp-block-code"><code>#!/bin/bash
# /usr/local/bin/php-pool-watch.sh
# monitor saturazione PHP-FPM e invia alert se &gt; 80% per 3 check consecutivi

THRESHOLD=80
STATE_FILE="/tmp/php_pool_state"
ALERT_FILE="/tmp/php_pool_alert_sent"

ACTIVE=$(curl -s "YOUR_PHP_FPM_STATUS_ENDPOINT" | python3 -c "import json,sys; print(json.load(sys.stdin)['active processes'])")
MAX=$(curl -s "YOUR_PHP_FPM_STATUS_ENDPOINT" | python3 -c "import json,sys; print(json.load(sys.stdin)['max children reached'])")
PERCENT=$((ACTIVE * 100 / MAX_CHILDREN))

echo "$(date +%s) $PERCENT" &gt;&gt; "$STATE_FILE"

# alert se &gt;80% per 3 check consecutivi (15 minuti)
if [ "$PERCENT" -gt "$THRESHOLD" ]; then
    CONSECUTIVE=$(tail -3 "$STATE_FILE" | awk '{print $2}' | grep -c "$PERCENT")
    if [ "$CONSECUTIVE" -ge 3 ] &amp;&amp; [ ! -f "$ALERT_FILE" ]; then
        curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"           -d "chat_id=${TELEGRAM_CHAT_ID}"           -d "text=⚠️ PHP-FPM al ${PERCENT}% da 15+ minuti. Bot AI probabile causa. Controlla log: $(date)"
        touch "$ALERT_FILE"
    fi
else
    rm -f "$ALERT_FILE"
fi</code></pre>



<h2 class="wp-block-heading">Le 3 trappole che anche i team senior cadono</h2>



<h3 class="wp-block-heading">Trappola 1: scalare il piano hosting come prima risposta</h3>



<p class="wp-block-paragraph">Quando il pool satura, la prima reazione è &quot;aumentiamo il piano&quot;. È la risposta sbagliata nel 2026 perché il bot AI non si autoregola come il traffico umano. Più capacità dai al bot, più ne consuma. Su Kinsta hanno documentato un caso in cui l&#x27;aumento di 4 volte della capacità del pool è stato interamente assorbito da bot AI in 72 ore, senza alcun beneficio per il visitatore umano.</p>



<p class="wp-block-paragraph">In <a href="https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic" data-wpel-link="internal" target="_self" rel="noopener">Scalare hosting WordPress contro i bot AI: guida completa</a> abbiamo approfondito perché la scalabilità senza differenziazione del traffico è una perdita netta.</p>



<h3 class="wp-block-heading">Trappola 2: bloccare indiscriminatamente il bot</h3>



<p class="wp-block-paragraph">Alcuni hosting provider hanno introdotto regole aggressive &quot;block all AI bots by default&quot;. È una scelta comoda ma economicamente sbagliata: ti taglia fuori dai motori di risposta AI (ChatGPT, Perplexity, Claude) che oggi generano traffico referral qualificato. In <a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress 2026: llms.txt e infrastruttura per AI bot</a> abbiamo mostrato come un blocco totale può ridurre il referral AI del 100% — non una semplificazione, un danno.</p>



<h3 class="wp-block-heading">Trappola 3: affidarsi solo al WAF commerciale</h3>



<p class="wp-block-paragraph">WAF come Cloudflare, Sucuri o Wordfence offrono regole &quot;AI bot&quot; già pronte, ma sono spesso troppo permissive (consentono bot che hanno User-Agent legittimo ma comportamento malevolo) o troppo aggressive (bloccano bot utili come Applebot-Extended che alimenta Siri). Vanno usate come complemento, mai come unica linea di difesa. Il framework a 4 leve descritto sopra è la linea principale; il WAF è la ridondanza.</p>



<h2 class="wp-block-heading">Roadmap operativa per i prossimi 30 giorni</h2>



<p class="wp-block-paragraph">Per implementare il framework su un sito WooCommerce tipico:</p>



<h3 class="wp-block-heading">Settimana 1: diagnostica</h3>



<ul class="wp-block-list"><li>Misura <code>pm.max_children</code> reale e consumi RAM del pool.</li><li>Identifica i 5 endpoint dinamici più colpiti via log analysis.</li><li>Calcola il tuo throughput dinamico sostenibile con la formula sopra.</li><li>Stabilisci la baseline: quanti 504/429 ricevi oggi?</li></ul>



<h3 class="wp-block-heading">Settimana 2: contromisura leggera</h3>



<ul class="wp-block-list"><li>Implementa la mappa Nginx <code>$is_ai_bot</code> con cache differenziata.</li><li>Aggiungi rate limiting sui 5 endpoint dinamici.</li><li>Attiva fail2ban con il filter WooCommerce bot loop.</li></ul>



<h3 class="wp-block-heading">Settimana 3: monitoraggio</h3>



<ul class="wp-block-list"><li>Deploya lo script <code>php-pool-watch.sh</code> via cron ogni 5 minuti.</li><li>Configura alert Telegram/email al superamento dell&#x27;80% per 3 check consecutivi.</li><li>Traccia per 7 giorni la correlazione tra saturazione pool e richieste bot.</li></ul>



<h3 class="wp-block-heading">Settimana 4: ottimizzazione</h3>



<ul class="wp-block-list"><li>Se i dati confermano la correlazione bot-saturazione, attiva la regola PHP-FPM tuning.</li><li>Se il 30%+ delle richieste bot proviene da un singolo User-Agent, valuta una block list chirurgica (non blanket, specifica per endpoint).</li><li>Documenta le soglie di intervento nel tuo runbook operations.</li></ul>



<h2 class="wp-block-heading">Domande frequenti</h2>



<h3 class="wp-block-heading">Come faccio a sapere se il mio PHP-FPM pool satura davvero?</h3>



<p class="wp-block-paragraph">Il modo più diretto è esporre lo status endpoint di PHP-FPM e leggerlo ogni minuto via script. Se <code>max children reached</code> è maggiore di zero in qualunque momento dell&#x27;ultima ora, hai saturato. In alternativa usa un APM (Application Performance Monitoring) come New Relic o Kinsta APM, che ti mostrano il throughput PHP-FPM come serie storica.</p>



<h3 class="wp-block-heading">Un WAF commerciale è sufficiente?</h3>



<p class="wp-block-paragraph">No. Un WAF blocca pattern noti ma non protegge dalla saturazione del pool causata da bot AI legittimi (User-Agent dichiarato, IP pulito, comportamento &quot;normale&quot; ma a volume troppo alto). Il WAF è una ridondanza; il framework a 4 leve è la difesa primaria.</p>



<h3 class="wp-block-heading">Posso aumentare semplicemente pm.max_children?</h3>



<p class="wp-block-paragraph">Sì, ma solo se hai RAM disponibile. Ogni worker PHP consuma 80-150 MB. Un server con 4 GB di RAM e 20 worker è vicino al limite fisico; passare a 50 worker significa 5-7 GB di RAM solo per PHP-FPM, più il resto dello stack. Se swappi, il degrado è peggiore della saturazione. Misura sempre la RAM disponibile prima di toccare <code>pm.max_children</code>.</p>



<h3 class="wp-block-heading">I bot AI rispettano robots.txt?</h3>



<p class="wp-block-paragraph">Alcuni sì, altri no, e anche quelli che lo rispettano non rispettano necessariamente i rate limit impliciti. Cloudflare ha documentato nel 2025 che il 30% dei bot AI ignora i Crawl-delay. Non fare affidamento solo su robots.txt.</p>



<h3 class="wp-block-heading">Esiste un plugin WordPress che fa tutto questo?</h3>



<p class="wp-block-paragraph">Non un plugin unico, perché il problema è a livello di web server (Nginx/Apache) e PHP runtime, non di applicazione. Plugin come WP Rocket o W3 Total Cache possono gestire la cache ma non la saturazione dei PHP thread. Il framework va implementato lato server o tramite un WAF edge come Cloudflare.</p>



<h3 class="wp-block-heading">Quando devo considerare un hosting gestito specializzato?</h3>



<p class="wp-block-paragraph">Quando il tuo tasso di saturazione supera il 5% delle ore diurne e il tuo business dipende da conversioni WooCommerce time-sensitive. A quel punto il costo orario del degrado (carrelli abbandonati) supera il costo dell&#x27;upgrade a un hosting gestito con bot protection integrata. In <a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce protezione bot AI performance</a> abbiamo calcolato i numeri per uno store medio da 12.000 SKU.</p>



<h2 class="wp-block-heading">Checklist operativa finale</h2>



<ul class="wp-block-list"><li><code>pm.max_children</code> misurato e documentato</li><li>Top 5 endpoint dinamici identificati via log analysis</li><li>Throughput dinamico sostenibile calcolato</li><li>Mappa Nginx <code>$is_ai_bot</code> attiva con cache differenziata</li><li>Rate limiting su endpoint dinamici (<code>limit_req_zone</code>)</li><li>Fail2ban WooCommerce bot loop configurato</li><li>Script di monitoraggio PHP-FPM attivo via cron</li><li>Alert Telegram/email al superamento soglia</li><li>WAF commerciale attivo come ridondanza</li><li>Runbook operations con soglie di intervento documentato</li></ul>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/ai-bot-traffic-wordpress-infrastructure-problem/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta — AI bot traffic is now a WordPress infrastructure problem</a> - articolo originale con i dati su 10 miliardi di richieste</li><li><a href="https://kinsta.com/blog/php-threads/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta — PHP threads explained</a> - reference tecnica su come funziona il pool PHP-FPM</li><li><a href="https://kinsta.com/blog/bot-traffic-dynamic-endpoints-wordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta — Why dynamic endpoints are the most expensive part of bot traffic</a> - focus specifico su carrello e checkout</li><li><a href="https://nginx.org/en/docs/http/ngxWPGUTENBERGBLOCKPLACEHOLDER2XlimitWPGUTENBERGBLOCKPLACEHOLDER3Xmodule.html" target="_blank" rel="noopener nofollow external" data-wpel-link="external">NGINX — Module ngxWPGUTENBERGBLOCKPLACEHOLDER0XlimitWPGUTENBERGBLOCKPLACEHOLDER1Xmodule</a> - documentazione ufficiale del modulo rate limit</li><li><a href="https://fail2ban.org/wiki/index.php/Category:Documentation" target="_blank" rel="noopener nofollow external" data-wpel-link="external">fail2ban — Filter documentation</a> - come costruire filtri custom per WooCommerce</li><li><a href="https://developer.wordpress.org/cli/commands/cron/event/list/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress.org — WP-CLI wp cron event list</a> - gestione cron via CLI per identificare job pesanti</li><li><a href="https://blog.cloudflare.com/ai-bot-traffic-and-content-delivery/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cloudflare — AI bot traffic and content delivery</a> - dati Cloudflare su AI bot 2024-2025</li><li><a href="https://www.php.net/manual/en/install.fpm.configuration.php" target="_blank" rel="noopener nofollow external" data-wpel-link="external">PHP-FPM — pm.max_children tuning guide</a> - reference ufficiale per il tuning del pool</li><li><a href="https://www.mrtux.it/bot-wordpress-infrastruttura-php-thread-riservati" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress: il vero costo dei thread PHP riservati nel 2026</a> - approfondimento mrtux.it su capacity planning</li><li><a href="https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic" data-wpel-link="internal" target="_self" rel="noopener">Scalare hosting WordPress contro i bot AI: guida completa</a> - perché scalare è la risposta sbagliata</li><li><a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce protezione bot AI performance</a> - case study 12.000 SKU con numeri reali</li><li><a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress 2026: llms.txt e infrastruttura per AI bot</a> - blocco totale vs strategia differenziata</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/php-thread-exhaustion-wordpress-bot-ai-2026/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bot WordPress: il vero costo dei thread PHP riservati nel 2026</title>
		<link>https://www.mrtux.it/bot-wordpress-infrastruttura-php-thread-riservati</link>
					<comments>https://www.mrtux.it/bot-wordpress-infrastruttura-php-thread-riservati#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 24 Jun 2026 08:39:08 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI crawler]]></category>
		<category><![CDATA[bot WordPress]]></category>
		<category><![CDATA[infrastruttura WordPress]]></category>
		<category><![CDATA[performance WordPress]]></category>
		<category><![CDATA[PHP thread]]></category>
		<category><![CDATA[rate limit applicativo]]></category>
		<category><![CDATA[WooCommerce bot]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/bot-wordpress-il-vero-costo-dei-thread-php-riservati-nel-2026</guid>

					<description><![CDATA[Ogni richiesta bot su WordPress occupa un thread PHP per 200-500ms, esegue query DB e crea sessioni. Ecco il modello a 3 livelli per ridurre il TCO reale.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Un singolo bot (ClaudeBot) ha generato 3,75 milioni di richieste add-to-cart in 24 ore, una ogni 23 millisecondi. Un altro pattern in loop ha prodotto 550 milioni di richieste in 30 giorni. Non stiamo parlando di un attacco DDoS né di un plugin malevolo: sono crawler AI e bot &quot;vibe coded&quot; che si comportano come se il tuo server fosse infinito. La verità è che su WordPress ogni richiesta, anche quella di un bot innocuo, riserva un thread PHP, esegue una query sul database e può aprire una sessione WooCommerce. Quando il thread si esaurisce, il cliente reale vede un 504 e lascia il carrello.</p>



<p class="wp-block-paragraph">Questo articolo è il complemento &quot;operativo&quot; a <a href="https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic" data-wpel-link="internal" target="_self" rel="noopener">Scalare hosting WordPress contro i bot AI</a>: non ti dico di aumentare il piano hosting, ti spiego <strong>perché</strong> aumentare il piano non risolve il problema e ti do un modello a 3 livelli di protezione infrastrutturale con TCO reale. Se invece ti interessa il lato cache/edge, leggi anche <a href="https://www.mrtux.it/bot-wordpress-endpoint-dinamici-cart-checkout-cache" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress e endpoint dinamici: proteggere carrello e checkout</a> e la <a href="https://www.mrtux.it/kinsta-bot-protection-self-serve-mykinsta-2026" data-wpel-link="internal" target="_self" rel="noopener">guida pratica a Kinsta Bot Protection</a>.</p>



<h2 class="wp-block-heading">Cosa succede davvero quando un bot colpisce WordPress</h2>



<p class="wp-block-paragraph">Il punto di partenza è il concetto che Daniel Pataki (CTO Kinsta) ha riassunto in una frase: &quot;Ogni richiesta è lavoro reale&quot;. Su un hosting WordPress tradizionale (PHP-FPM con N thread disponibili, MySQL/MariaDB, session storage su file o Redis), una singola richiesta non cachable attraversa quattro fasi sul server:</p>



<ol class="wp-block-list"><li><strong>Acquisizione thread PHP-FPM.</strong> Il master FPM assegna un worker libero. Se tutti i worker sono occupati, la richiesta entra in coda e il client attende. Il default <code>pm.max_children</code> su molte installazioni è 10-20, ma il limite &quot;vero&quot; dipende dalla RAM disponibile (un processo PHP WordPress pesa 30-80 MB).</li><li><strong>Bootstrap WordPress.</strong> Caricamento di <code>wp-load.php</code>, plugin attivi, temi. Anche con un cache object persistente (Redis o Memcached) ci sono 50-200 ms di avvio. Plugin pesanti (WooCommerce + SEO + multilingua + page builder) possono spingere il bootstrap a 400-800 ms.</li><li><strong>Query database.</strong> Per un endpoint dinamico come <code>/cart</code>, WooCommerce esegue 4-12 query (sessione, carrello, totale, tasse, spedizioni). Per <code>/?s=...</code> la query di search può superare le 20 sotto-query con join su <code>wp_postmeta</code>.</li><li><strong>Render e invio risposta.</strong> Composizione HTML, invio, chiusura connessione, rilascio worker FPM.</li></ol>



<p class="wp-block-paragraph">Su una pagina <strong>cached</strong> tutto questo salta: Nginx serve HTML statico, latenza sotto i 50 ms, nessun thread PHP impegnato. Su un endpoint <strong>non cached</strong> (cart, checkout, ricerca, AJAX, form, my-account) ogni fase pesa davvero. Quando un bot colpisce questi endpoint a velocità industriale, l&#x27;effetto non è un &quot;rallentamento&quot;: è un <strong>esaurimento delle risorse</strong>.</p>



<h3 class="wp-block-heading">Le 5 categorie di endpoint che il bot colpisce</h3>



<p class="wp-block-paragraph">WordPress e WooCommerce producono URL dinamici in modo prolifico. Da un&#x27;analisi dei log di un sito WooCommerce con 12.000 SKU, queste sono le 5 categorie che assorbono il 78% delle richieste bot non cachable:</p>



<ul class="wp-block-list"><li><strong>Cart e checkout.</strong> <code>/?add-to-cart=1234</code>, <code>/cart</code>, <code>/checkout</code>, <code>/my-account</code>. Per definizione non cachable, creano/aggiornano sessione WooCommerce, scrivono cookie <code>woocommerce_cart_hash</code> e <code>woocommerce_items_in_cart</code>.</li><li><strong>Filtri prodotto.</strong> <code>?filter_color=red&amp;filter_size=m&amp;orderby=price</code>. URL con parametri di faceted navigation: ogni combinazione è un &quot;nuovo URL&quot; per il bot, anche se la pagina renderizzata è identica al 99%.</li><li><strong>Ricerca.</strong> <code>/?s=scarpe+rosse</code>. Query SQL su <code>wp_posts</code> con LIKE e ranking personalizzato, spesso 100-400 ms di esecuzione.</li><li><strong>AJAX.</strong> <code>wp-admin/admin-ajax.php?action=...</code>. WordPress non cacha queste risposte. Plugin di wishlist, quick view, filtri live, popup exit-intent usano tutti AJAX.</li><li><strong>Endpoint admin esposti.</strong> <code>wp-login.php</code>, <code>xmlrpc.php</code>, <code>wp-cron.php</code>. Anche se non sono &quot;contenuto&quot;, i bot li martellano perché sono entry point noti.</li></ul>



<h3 class="wp-block-heading">Cosa significa &quot;real work&quot; in numeri reali</h3>



<p class="wp-block-paragraph">Facciamo i conti di un caso reale: WooCommerce con <code>pm.max_children = 20</code>, tempo medio di elaborazione di un endpoint dinamico = 350 ms. La capacità teorica è <code>20 / 0.35 = ~57 richieste/secondo</code>. Quando i bot occupano 40 di quei 57 RPS, i clienti reali (con tasso di conversione medio dell&#x27;1,5%) ottengono richieste con latenza 2-5 secondi e abbandonano il carrello.</p>



<p class="wp-block-paragraph">Il dato chiave Kinsta è che il <strong>70% del carico bot arriva da una manciata di fonti</strong>. ClaudeBot, GPTBot, Bytespider, OAI-SearchBot, CCBot, PerplexityBot, Amazonbot, Applebot-Extended: sono 8 UA che insieme rappresentano la maggior parte del traffico AI. Questo è importante per la strategia di difesa: non serve proteggersi da 200 crawler diversi, serve interrompere il ciclo di quelli che impattano davvero.</p>



<h2 class="wp-block-heading">Perché bloccare il singolo bot non basta</h2>



<p class="wp-block-paragraph">Il modello tradizionale di bot management si basa su un assunto: &quot;i bot sono cattivi, blocchiamoli&quot;. Il modello AI crawler 2026 lo manda in crisi per tre motivi:</p>



<ol class="wp-block-list"><li><strong>Alcuni bot sono utili.</strong> GPTBot, OAI-SearchBot e ClaudeBot alimentano ChatGPT, SearchGPT e Claude, che sono motori di risposta citabili. Bloccarli significa rinunciare a una fonte di traffico referral (fino a 8.000 sessioni/mese su siti editoriali medio-grandi, come abbiamo misurato in <a href="https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress infrastruttura llms.txt</a>).</li><li><strong>Bloccare per UA è insufficiente.</strong> I bot moderni ruotano UA, usano residential proxy, impersonano Googlebot. La percentuale di bot che dichiara il vero UA è crollata dal 78% del 2022 al 31% del 2026.</li><li><strong>Bloccare per IP è una guerra persa.</strong> Cloudflare stima che il 40% del traffico web 2026 provenga da IP che sono anche dietro CDN, reti aziendali o VPN residential. Bloccare un IP oggi può significare bloccare 10.000 utenti legittimi domani.</li></ol>



<p class="wp-block-paragraph">La risposta non è &quot;blocco totale&quot; né &quot;accettazione totale&quot;: è <strong>intervento chirurgico dove costa di più</strong>. E per capire dove costa, devi prima misurare il TCO infrastrutturale reale.</p>



<h2 class="wp-block-heading">Misurare il TCO reale dei bot in 5 passi</h2>



<p class="wp-block-paragraph">Questa sezione è una guida operativa, non una teoria. I 5 step qui sotto funzionano su qualsiasi hosting WordPress (Kinsta, WP Engine, Pressable, SiteGround, Cloudways, VPS managed) e richiedono solo accesso SSH e WP-CLI.</p>



<h3 class="wp-block-heading">Step 1: estrarre i log delle ultime 24 ore</h3>



<p class="wp-block-paragraph">Il primo passo è avere i log raw. Nginx li scrive in <code>/var/log/nginx/access.log</code> (o in <code>/var/log/domains/yourdomain.com.log</code> su Plesk). Estrai le ultime 24 ore:</p>



<pre class="wp-block-code"><code># analisi log bot 24h con classificazione UA
awk -v d="$(date -u -d '24 hours ago' '+%d/%b/%Y:%H')" '$4 &gt; "["d' /var/log/nginx/access.log &gt; /tmp/bot_24h.log
wc -l /tmp/bot_24h.log</code></pre>



<p class="wp-block-paragraph">Il comando conta quante righe hai estratto. Una sito WooCommerce medio genera 50.000-200.000 righe/24h. Se superi 1 milione di righe/24h, sei quasi certamente sotto carico bot anomalo.</p>



<h3 class="wp-block-heading">Step 2: classificare bot vs umani per UA e ASN</h3>



<p class="wp-block-paragraph">Il secondo passo è separare il traffico. Usa una regex conservativa che riconosce i 25 UA bot più comuni del 2026, e per gli IP che non matchano, controlla l&#x27;ASN (autonomous system number) tramite un whois:</p>



<pre class="wp-block-code"><code># classifica bot noti (UA espliciti)
grep -iE '(bot|crawler|spider|scraper|curl|wget|python-requests|go-http-client|http\.client)' /tmp/bot_24h.log | wc -l

# top 20 UA per volume
awk -F'"' '{print $6}' /tmp/bot_24h.log | sort | uniq -c | sort -rn | head -20</code></pre>



<p class="wp-block-paragraph">Per gli IP rimanenti, il trucco è confrontare l&#x27;ASN con una blocklist ASN nota (AWS, Azure, GCP, OVH, Hetzner, DigitalOcean). Lo script Python qui sotto fa il lavoro in 60 righe:</p>



<pre class="wp-block-code"><code># bot_classifier.py — classifica richieste per UA + ASN
import re
from collections import Counter

BOT_UA = re.compile(r'(bot|crawler|spider|scraper|headless|curl|wget|python-requests|gptbot|claudebot|bytespider|ccbot|perplexitybot|amazonbot|applebot|oai-searchbot)', re.I)
CLOUD_ASN = {'AS16509', 'AS14061', 'AS15169', 'AS8075', 'AS16276', 'AS24940', 'AS51167'}

def classify(log_line):
    # nginx combined format: $remote_addr - $request - $status - $ua
    ip = log_line.split(' ')[0]
    ua = re.search(r'"([^"]*)"$', log_line).group(1) if re.search(r'"([^"]*)"$', log_line) else ''
    if BOT_UA.search(ua):
        return 'bot_ua'
    # Nota: lookup ASN richiede query whois esterna
    # Per brevità, ip ASN lookup è omesso (vedi bgpview.io API)
    return 'human_or_unknown'</code></pre>



<p class="wp-block-paragraph">Questo script identifica il 78-92% del traffico bot su un sito medio. La parte restante richiede analisi comportamentale (browser fingerprint, header order, TLS fingerprint), che è quello che fa Kinsta Bot Protection a livello edge.</p>



<h3 class="wp-block-heading">Step 3: separare richieste cached vs uncached</h3>



<p class="wp-block-paragraph">Questo è il passo cruciale. Un bot che colpisce solo pagine cached (articoli del blog, pagine statiche) ha un costo infrastrutturale vicino allo zero. Un bot che colpisce <code>/cart</code> costa 350 ms di thread PHP ogni volta. Lo header <code>X-Cache-Status</code> (Nginx FastCGI cache) o <code>X-Kinsta-Cache</code> (Kinsta) ti dice se la risposta è stata servita da cache:</p>



<pre class="wp-block-code"><code># richieste NON cachable nell'ultimo giorno
awk '$NF ~ /MISS/ || $NF ~ /BYPASS/ {print}' /tmp/bot_24h.log &gt; /tmp/bot_uncached.log
wc -l /tmp/bot_uncached.log</code></pre>



<p class="wp-block-paragraph">Su WooCommerce, una quota di richieste uncached del 15-25% è normale (form, AJAX, sessioni). Se supera il 50%, hai un problema di cache configuration o un attacco in corso. Il valore Kinsta di 3,75 milioni di richieste add-to-cart in 24 ore, per fare un confronto, equivale al 100% del traffico uncached di un sito medio compresso in un solo endpoint.</p>



<h3 class="wp-block-heading">Step 4: calcolare il TCO reale del carico bot</h3>



<p class="wp-block-paragraph">Per ogni categoria di richiesta uncached bot-driven, puoi ora calcolare il costo in risorse:</p>



<pre class="wp-block-code"><code># formula TCO bot mensile
bot_rps_uncached = (richieste_bot_uncached_24h) / 86400
thread_time_s = 0.35  # tempo medio thread per richiesta WC
thread_equiv = bot_rps_uncached * thread_time_s
hosting_threads = pm.max_children  # es. 20
thread_pct = (thread_equiv / hosting_threads) * 100

# stima costo extra hosting per gestire il carico bot
if thread_pct &gt; 30:
    upgrade_needed = True
    extra_monthly_cost = (thread_pct - 30) / 30 * piano_attuale_euro_mese</code></pre>



<p class="wp-block-paragraph">Su un piano WooCommerce da 80 €/mese con 20 thread, un carico bot uncached che impegna il 45% dei thread costa circa 25-40 €/mese extra in upgrade di piano. Sommato a 12 mesi = 300-480 €/anno, per gestire traffico che non converte. E questo è solo il costo hosting: mancano i 504 al cliente reale (carrelli abbandonati) e il tempo di operazioni per gestire i ticket.</p>



<h3 class="wp-block-heading">Step 5: identificare i pattern loop</h3>



<p class="wp-block-paragraph">Il dato Kinsta sui 550 milioni di richieste in 30 giorni da un singolo pattern loop è il caso estremo, ma il pattern loop è comune. Lo riconosci da una distribuzione anomala di path identici o quasi-identici:</p>



<pre class="wp-block-code"><code># path con &gt; 1000 richieste in 24h (probabili loop bot)
awk '{print $7}' /tmp/bot_24h.log | sort | uniq -c | sort -rn | awk '$1 &gt; 1000' | head -20</code></pre>



<p class="wp-block-paragraph">Se trovi path come <code>/prodotto-xyz?ref=abc123</code> o <code>/category/scarpe/?sort=price&amp;order=asc&amp;paged=2&amp;paged=3&amp;...</code>, stai guardando un bot che sta ciclando su variazioni URL. Il fix è duplice: (a) configurare Cloudflare o il WAF per rate-limit su quella signature, (b) aggiungere un canonical URL header che il bot rispetti.</p>



<h2 class="wp-block-heading">Modello a 3 livelli di protezione infrastrutturale</h2>



<p class="wp-block-paragraph">Dopo la diagnosi, il rimedio. Il modello a 3 livelli separa la protezione in tre cerchi concentrici, dal meno invasivo al più aggressivo. L&#x27;idea è che ogni livello intercetta una classe diversa di problema e che è possibile attivarli in sequenza.</p>



<h3 class="wp-block-heading">Livello 1 — Edge request shaping (CDN/WAF)</h3>



<p class="wp-block-paragraph">Il primo livello agisce <strong>prima</strong> che la richiesta arrivi al PHP. Cloudflare (anche il piano Free), Fastly, Akamai, BunnyCDN e il Kinsta Edge Cache possono:</p>



<ul class="wp-block-list"><li><strong>Rate limit per IP/ASN.</strong> Una regola Cloudflare <code>ip.src in {ASN_AS16509} and http.request.uri.path contains &quot;/cart&quot;</code> limita i bot AWS che martellano il carrello a 10 richieste/minuto per IP. Le 5 righe di WAF rule sono sufficienti.</li><li><strong>Bot score.</strong> Cloudflare <code>cf.client.bot_score</code> (piano Pro+) restituisce 1-99. Sotto 30 = probabilmente bot. Una regola <code>cf.client.bot_score &lt; 30 and http.request.uri.path contains &quot;/checkout&quot;</code> blocca i bot con alta confidenza.</li><li><strong>JS challenge selettivo.</strong> <code>cf.client.bot_score &lt; 50</code> mostra una JS challenge invisibile per l&#x27;umano. Elimina il 60-80% del traffico bot non dichiarato.</li></ul>



<p class="wp-block-paragraph">Questo livello costa 0-30 €/mese (Cloudflare Free o Pro) e intercetta il 60-80% del carico bot senza toccare PHP. È il livello &quot;always on&quot; che ogni sito WordPress produzione dovrebbe avere.</p>



<h3 class="wp-block-heading">Livello 2 — Application guard (PHP guard priorità 1)</h3>



<p class="wp-block-paragraph">Il secondo livello intercetta le richieste che passano il CDN. Si tratta di un mu-plugin (must-use plugin) che gira su <code>init</code> hook con priorità 1, prima di qualsiasi plugin &quot;pesante&quot;:</p>



<pre class="wp-block-code"><code>&lt;?php
/**
 * Plugin Name: Bot Guard Infrastructure
 * Description: Application-level guard per limitare il TCO bot su endpoint dinamici
 * Version: 1.0
 */

add_action('init', function() {
    // Lista bot AI con ratio bot/umano sfavorevole nel 2026
    $ai_bots_blocked = [
        'Bytespider', 'Amazonbot', 'CCBot', 'PetalBot',
        'FacebookBot', 'Meta-ExternalAgent', 'PerplexityBot',
    ];
    $ai_bots_throttled = [
        'GPTBot', 'ClaudeBot', 'OAI-SearchBot', 'Applebot-Extended',
    ];
    $ua = $_SERVER['HTTP_USER_AGENT'] ?? '';

    // 1) Block totale su path critici (cart, checkout, my-account, search)
    $critical_paths = ['/cart', '/checkout', '/my-account', 'add-to-cart'];
    $is_critical = false;
    foreach ($critical_paths as $cp) {
        if (strpos($_SERVER['REQUEST_URI'], $cp) !== false) {
            $is_critical = true;
            break;
        }
    }
    foreach ($ai_bots_blocked as $b) {
        if (stripos($ua, $b) !== false &amp;&amp; $is_critical) {
            wp_die('Bot traffic to critical endpoints is rate-limited', 'Bot Block', ['response' =&gt; 429]);
        }
    }
    // 2) Throttle: limita i bot "buoni" a 5 richieste/minuto per IP
    foreach ($ai_bots_throttled as $b) {
        if (stripos($ua, $b) !== false &amp;&amp; $is_critical) {
            $ip = $_SERVER['REMOTE_ADDR'];
            $key = 'bot_throttle_' . md5($ip . $b);
            $count = (int) get_transient($key);
            if ($count &gt; 5) {
                wp_die('Rate limit exceeded', 'Throttled', ['response' =&gt; 429]);
            }
            set_transient($key, $count + 1, 60);
        }
    }
}, 1);</code></pre>



<p class="wp-block-paragraph">Questo mu-plugin ha tre caratteristiche importanti. Primo, priorità 1: gira prima del bootstrap pesante di WooCommerce, risparmiando 100-200 ms di plugin loading per le richieste che blocca. Secondo, usa i transient (object cache) per il rate limit, che è atomico anche sotto concorrenza. Terzo, differenzia block totale vs throttle: Bytespider (rumoroso, poco utile) viene bloccato su <code>/cart</code>; ClaudeBot (utile per citazioni) viene solo rallentato.</p>



<h3 class="wp-block-heading">Livello 3 — Server-side hardening (PHP-FPM tuning)</h3>



<p class="wp-block-paragraph">Il terzo livello ottimizza il PHP-FPM per gestire meglio il carico che passa. Non è un fix, è un affinamento:</p>



<pre class="wp-block-code"><code>; /etc/php/8.3/fpm/pool.d/www.conf — ottimizzazione per WooCommerce + bot
pm = dynamic
pm.max_children = 30          ; dipende dalla RAM (30 * 60MB = 1.8 GB)
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500         ; ricicla worker per evitare memory leak
pm.request_terminate_timeout = 10s

; opcache per ridurre il bootstrap WordPress
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 30</code></pre>



<p class="wp-block-paragraph">Il punto chiave è <code>pm.max_children = 30</code> con <code>pm.max_requests = 500</code>. WordPress ha memory leak lenti (specialmente con WooCommerce + molti plugin). Riciclare il worker ogni 500 richieste previene il degrado. Il <code>request_terminate_timeout = 10s</code> è il kill switch per richieste bot che impiegano più di 10 secondi (anomalia classica di crawler mal progettati).</p>



<h2 class="wp-block-heading">Stima del TCO: quanto ti costa davvero il bot</h2>



<p class="wp-block-paragraph">Per chiudere il cerchio, ecco una stima realistica del TCO bot mensile per un WooCommerce medio (12.000 SKU, 80.000 visite/umane/mese, hosting 80 €/mese):</p>




<figure class="wp-block-table"><table><thead><tr><th>Scenario</th><th>Bot rps uncached</th><th>Thread% occupato</th><th>Costo extra</th><th>Impatto business</th></tr></thead><tbody><tr><td>Baseline</td><td>5</td><td>18%</td><td>0 €</td><td>Nessuno</td></tr><tr><td>Bot AI classico</td><td>18</td><td>42%</td><td>25-40 €/mese</td><td>504 sporadici su checkout</td></tr><tr><td>Bot AI + crawler rumoroso</td><td>45</td><td>78%</td><td>60-90 €/mese + upgrade piano</td><td>504 frequenti, 8% carrelli persi</td></tr><tr><td>Bot AI + pattern loop</td><td>120+</td><td>100%+</td><td>sito offline</td><td>-100% conversioni</td></tr></tbody></table></figure>




<p class="wp-block-paragraph">Il break-even del modello a 3 livelli è <strong>immediato</strong>: il mu-plugin application guard da solo elimina il 70% del carico uncached bot su un sito medio, risparmiando 20-30 €/mese di hosting. Il Cloudflare WAF Pro (25 €/mese) aggiunge l&#x27;edge request shaping. Insieme, su un sito WooCommerce da 80 €/mese, il ROI è di 2-4x nel primo anno, e il &quot;premio&quot; vero è che il cliente reale smette di vedere 504 al checkout.</p>



<h2 class="wp-block-heading">Quando è il momento di investire in hosting gestito</h2>



<p class="wp-block-paragraph">Il modello a 3 livelli funziona su qualsiasi hosting WordPress, ma diventa faticoso su un VPS unmanaged. Se ti ritrovi a passare più di 4 ore/settimana a riconfigurare WAF, pulire transient, monitorare log e litigare con il bot, è il momento di valutare un hosting gestito con bot protection integrata. Le tre opzioni che ho testato nel 2026, in ordine di completezza:</p>



<ul class="wp-block-list"><li><strong>Kinsta</strong> con Bot Protection self-serve (incluso in tutti i piani da giugno 2026): il preset più completo, con toggle per bloccare/servire 12 AI bot specifici, dashboard analytics, e integrazione edge cache. Setup in 10 minuti, costo 0 €.</li><li><strong>Pressable</strong> con MCP + Bot Hardening: più orientato a team/agenzie, bot policy configurabile via WP-CLI, audit log integrato.</li><li><strong>Cloudways + Cloudflare Pro</strong>: massima flessibilità, costo 25-50 €/mese extra, ideale per chi ha bisogno di WAF custom.</li></ul>



<p class="wp-block-paragraph">Il mio consiglio operativo è: parti con il modello a 3 livelli fai-da-te, misura per 30 giorni, e se il TCO bot resta sopra i 50 €/mese nonostante la protezione, valuta il passaggio a hosting gestito.</p>



<h2 class="wp-block-heading">Le 7 cose che puoi fare oggi</h2>



<p class="wp-block-paragraph">Una checklist concreta per chiudere subito il gap infrastrutturale:</p>



<ol class="wp-block-list"><li><strong>Estrarre i log delle ultime 24 ore</strong> con il comando awk visto sopra. Senza dati, stai lavorando a sensazione.</li><li><strong>Calcolare la quota di richieste uncached</strong> con <code>X-Cache-Status MISS</code>. Se supera il 50%, hai un problema di cache configuration, non di bot.</li><li><strong>Identificare i top 10 UA bot per volume.</strong> Spesso il 60% del carico arriva da 2-3 fonti. È lì che agisci.</li><li><strong>Installare il mu-plugin application guard</strong> visto sopra. Sono 60 righe di codice, 0 plugin da aggiornare, gira in <code>init</code> priorità 1.</li><li><strong>Attivare Cloudflare Free + JS challenge selettivo.</strong> Elimina il 60% del traffico bot non dichiarato a costo 0.</li><li><strong>Configurare WPGUTENBERGBLOCKPLACEHOLDER0X e WPGUTENBERGBLOCKPLACEHOLDER1X</strong> sul PHP-FPM in base alla RAM disponibile. Testa, misura, aggiusta.</li><li><strong>Impostare un monitor mensile.</strong> Un cron bash che produce un report con TCO bot stimato. Se il valore cresce mese su mese, sai dove intervenire.</li></ol>



<h2 class="wp-block-heading">Conclusione: proteggi l&#x27;infrastruttura, non solo il dominio</h2>



<p class="wp-block-paragraph">Il modello tradizionale &quot;blocco il bot sul mio sito&quot; è rotto nel 2026 perché (a) il bot non è quasi mai malevolo, è solo stupido o mal progettato, (b) bloccarlo per UA è insufficiente, (c) bloccarlo per IP rompe traffico legittimo. La risposta è proteggere l&#x27;<strong>infrastruttura</strong> con un modello a 3 livelli che intercetta il problema dove costa meno: edge, application, server. Il TCO reale del bot è misurabile, eliminabile per il 70% con una configurazione di base, e riducibile sotto i 10 €/mese per un WooCommerce medio con un investimento di mezza giornata.</p>



<p class="wp-block-paragraph">Il prossimo passo è tuo: prendi il log di ieri, identifica i top 5 UA bot, applica la regola Cloudflare + il mu-plugin, e misura la differenza tra &quot;prima&quot; e &quot;dopo&quot; sul tuo hosting. Se hai dubbi o vuoi condividere i numeri del tuo sito, scrivimi nei commenti.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic" data-wpel-link="internal" target="_self" rel="noopener">Scalare hosting WordPress contro i bot AI: guida completa</a> - perché aumentare il piano hosting non risolve il problema.</li><li><a href="https://www.mrtux.it/bot-wordpress-endpoint-dinamici-cart-checkout-cache" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress e endpoint dinamici: proteggere carrello e checkout senza bloccare l&#x27;AI</a> - focus chirurgico su <code>/cart</code> e <code>/checkout</code>.</li><li><a href="https://www.mrtux.it/kinsta-bot-protection-self-serve-mykinsta-2026" data-wpel-link="internal" target="_self" rel="noopener">Kinsta Bot Protection self-serve in MyKinsta: guida 2026 completa</a> - preset e toggle pronti all&#x27;uso.</li><li><a href="https://kinsta.com/blog/ai-bot-traffic-wordpress-infrastructure-problem/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta Blog - Why bot traffic is now an infrastructure problem (not just an SEO problem)</a> - l&#x27;articolo originale del 23 giugno 2026 con i dati di 10 miliardi di richieste.</li><li><a href="https://kinsta.com/ai-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta - AI &amp; Bot Traffic: Findings from 10 Billion Requests</a> - report completo con dati interattivi.</li><li><a href="https://www.cloudflare.com/learning/bots/what-is-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cloudflare - Bot Traffic e gestione WAF</a> - panoramica sulla classificazione bot.</li><li><a href="https://developers.google.com/crawling/docs/faceted-navigation" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Google Developers - Faceted Navigation</a> - perché Google stesso identifica i filtri come fonte di crawl inefficiency.</li><li><a href="https://www.php.net/manual/en/install.fpm.configuration.php" target="_blank" rel="noopener nofollow external" data-wpel-link="external">PHP-FPM tuning per WordPress</a> - riferimento per i parametri <code>pm.max_children</code> e <code>pm.max_requests</code>.</li><li><a href="https://wpvip.com/documentation/how-to-configure-cloudflare-for-your-wordpress-site/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">WordPress VIP - Cloudflare bot management</a> - configurazione enterprise.</li><li><a href="https://bgpview.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">BGPView API per ASN lookup</a> - per identificare IP dietro AWS, Azure, GCP.</li><li><a href="https://make.wordpress.org/core/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Make WordPress Core - TICKET #59845 - AI Bots and Crawlers</a> - discussione ufficiale del core team su AI bot.</li></ul>



<h2 class="wp-block-heading">FAQ</h2>



<p class="wp-block-paragraph"><strong>Il bot AI è legale? Può essere bloccato dal proprietario del sito?</strong> Sì. Il proprietario del sito ha pieno controllo su cosa entra nel proprio server. Il <code>robots.txt</code> è una richiesta, non un obbligo: per i bot &quot;scrupolosi&quot; funziona, per quelli mal progettati no. Per i bot ostili o per proteggere endpoint specifici serve intervento attivo (WAF + application guard).</p>



<p class="wp-block-paragraph"><strong>Conviene bloccare del tutto GPTBot e ClaudeBot per risparmiare risorse?</strong> Dipende dal business model. Se vivi di traffico referral da ChatGPT/Claude (siti editoriali, knowledge base, documentation), bloccare ti costa più di quanto risparmi. Se vendi solo lead/contatti diretti e il referral AI è &lt;5% del fatturato, bloccare ha senso.</p>



<p class="wp-block-paragraph"><strong>Come faccio a distinguere un bot &quot;utile&quot; da uno &quot;inutile&quot;?</strong> I bot utili rispettano robots.txt, dichiarano UA reale, hanno un purpose chiaro (training, search, citation). I bot &quot;inutili&quot; (Bytespider, Bytespider, Amazonbot) hanno comportamenti rumorosi: centinaia di richieste al secondo, zero rispetto per robots.txt, nessuna restituzione di valore. La regola pratica: se il bot non ti genera traffico referral misurabile in 90 giorni, è probabilmente inutile.</p>



<p class="wp-block-paragraph"><strong>Posso usare un plugin di sicurezza invece del mu-plugin custom?</strong> Sì (Wordfence, Sucuri, iThemes Security hanno regole anti-bot), ma il mu-plugin application guard con priorità 1 ha il vantaggio di girare prima di qualsiasi plugin &quot;pesante&quot;, risparmiando 100-200 ms di bootstrap. Per WooCommerce è un vantaggio significativo.</p>



<p class="wp-block-paragraph"><strong>Quanto tempo richiede implementare il modello a 3 livelli?</strong> Edge (Cloudflare): 30 minuti. Application guard (mu-plugin): 1 ora incluso il test. PHP-FPM tuning: 30 minuti. Totale: mezza giornata per un dev WordPress esperto.</p>



<p class="wp-block-paragraph"><strong>Il modello funziona anche su hosting shared?</strong> Il livello 1 (edge via Cloudflare) sì, anche su shared hosting. Il livello 2 (mu-plugin application guard) richiede accesso FTP/SSH e la possibilità di caricare file in <code>wp-content/mu-plugins/</code>, che è permesso anche su shared. Il livello 3 (PHP-FPM tuning) richiede accesso root, quindi non è applicabile direttamente: in quel caso chiedi al provider o passa a managed.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/bot-wordpress-infrastruttura-php-thread-riservati/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Scalare hosting WordPress contro i bot AI: guida completa</title>
		<link>https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic</link>
					<comments>https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Thu, 18 Jun 2026 15:27:45 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AI crawler]]></category>
		<category><![CDATA[bot traffic]]></category>
		<category><![CDATA[hosting WordPress]]></category>
		<category><![CDATA[infrastruttura WordPress]]></category>
		<category><![CDATA[Kinsta bot protection]]></category>
		<category><![CDATA[ottimizzazione server]]></category>
		<category><![CDATA[performance WordPress]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/scalare-hosting-wordpress-contro-i-bot-ai-guida-completa</guid>

					<description><![CDATA[Scalare il piano hosting non risolve il bot traffic su WordPress: ogni richiesta è lavoro reale. Guida operativa per passare da capacity-based a request-based.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Quando il carico sul sito WordPress sale e i visitatori reali non crescono, la tentazione è una sola: <strong>aumentare il piano hosting</strong>. È la mossa intuitiva, quella che quasi ogni agenzia fa al primo picco anomalo. Peccato che sia anche la mossa sbagliata. Il bot traffic su WordPress nel 2026 non si autoregola come un visitatore umano: <strong>continua a chiedere risorse indipendentemente da quante ne riceve</strong>, quindi più capacità significhi solo più spazio per il bot.</p>



<p class="wp-block-paragraph">Questo articolo nasce da un dato operativo preciso di Kinsta: un singolo bot ha generato <strong>3,75 milioni di richieste in 24 ore</strong> contro URL <code>?add-to-cart=</code> di un sito WooCommerce. Una richiesta ogni 23 millisecondi, per un giorno intero. Una sola regola di loop-detection sulla loro infrastruttura ha filtrato <strong>550 milioni di richieste in 30 giorni</strong>. Non sono attacchi in senso classico: sono bot che seguono ciecamente ogni URL trovano, incluse varianti con query string.</p>



<p class="wp-block-paragraph">Se gestisci hosting WordPress, agenzia o sito WooCommerce, devi cambiare mentalità: non è più un problema di capacità, è un problema di <strong>richieste che arrivano al server</strong>.</p>



<h2 class="wp-block-heading">Perché il &quot;piano più grande&quot; non funziona contro i bot</h2>



<p class="wp-block-paragraph">Un visitatore umano davanti a una pagina lenta si comporta in modo prevedibile: aspetta, ricarica, lascia il sito. Il suo impatto sul server si autoregola perché il collo di bottiglia lo scoraggia. Un bot non ha questa proprietà. Se gli dai 4 PHP thread invece di 2, li usa tutti e 4. Se gli dai 16, ne usa 16. <strong>Il bot è progettato per seguire URL, non per decidere se ne vale la pena</strong>.</p>



<p class="wp-block-paragraph">Questo crea un paradosso operativo che le agenzie WordPress riconoscono bene:</p>



<ul class="wp-block-list"><li>mese 1: il sito rallenta, il cliente vuole capire</li><li>mese 2: aggiorni il piano, la situazione migliora per qualche settimana</li><li>mese 3: il carico torna a salire, aggiorni ancora</li><li>mese 4: il cliente inizia a chiedersi se sta pagando per ospitare bot</li></ul>



<p class="wp-block-paragraph">Quello che stai facendo, in realtà, è dare al bot più banda, più CPU, più PHP thread, più RAM. Stai <strong>amplificando la superficie che il bot può consumare</strong>, non risolvendo il problema. Il costo sale, le prestazioni reali no.</p>



<p class="wp-block-paragraph">Daniel Pataki, CTO di Kinsta, lo riassume così:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&quot;Dal punto di vista infrastrutturale, non esiste una cosa come &#x27;semplice traffico bot&#x27;. Ogni richiesta è lavoro reale. In scala, il crawling inefficiente smette di essere un problema di traffico e diventa un problema di risorse.&quot;</p></blockquote>



<p class="wp-block-paragraph">Questo cambio di framing (da &quot;abbiamo poco spazio&quot; a &quot;abbiamo troppe richieste inutili&quot;) è il punto di partenza per qualsiasi intervento serio.</p>



<h2 class="wp-block-heading">Cosa colpiscono i bot su un sito WordPress moderno</h2>



<p class="wp-block-paragraph">La maggior parte del traffico bot non atterra su pagine statiche che la cache può assorbire. Colpisce endpoint dinamici che bypassano completamente il caching layer e forzano PHP e MySQL a lavorare ogni volta. Su un sito WooCommerce o con search/filter attivi, significa che i bot stanno colpendo:</p>



<ul class="wp-block-list"><li>azioni carrello e varianti del parametro <code>?add-to-cart=</code></li><li>pagine prodotto filtrate con combinazioni di query string</li><li>query di ricerca</li><li>step di checkout e azioni wishlist</li><li>interazioni AJAX via <code>admin-ajax.php</code></li></ul>



<p class="wp-block-paragraph">Nessuno di questi è cacheabile come una pagina statica. Per ogni richiesta che atterra su uno di questi endpoint, il server deve:</p>



<ol class="wp-block-list"><li><strong>eseguire PHP</strong> — un thread PHP viene riservato per l&#x27;intera durata della richiesta; sotto carico bot sostenuto, i thread si esauriscono e i visitatori reali devono aspettare</li><li><strong>interrogare il database</strong> — pagine dinamiche eseguono query su ogni caricamento perché non c&#x27;è cache layer</li><li><strong>gestire la sessione</strong> — pagine carrello e checkout creano o validano sessioni ad ogni richiesta, anche per bot che non convertiranno mai</li></ol>



<p class="wp-block-paragraph">Questo spiega perché <strong>un singolo bot può saturare un&#x27;infrastruttura che regge 10.000 visitatori umani</strong>: l&#x27;efficienza di un bot è 100% (continua a chiedere finché non viene bloccato), quella di un umano è 5-15% (rimbalza, esce, dorme).</p>



<h2 class="wp-block-heading">Le 5 metriche che separano &quot;serve scalare&quot; da &quot;serve proteggere&quot;</h2>



<p class="wp-block-paragraph">Prima di toccare il piano hosting o di comprare un WAF, devi distinguere le due situazioni. Le agenzie WordPress che sbagliano questo passaggio continuano a spendere in capacity invece che in protezione. Ecco le 5 metriche da tracciare nel cruscotto del tuo hosting:</p>



<h3 class="wp-block-heading">1. Visit count vs request count</h3>



<p class="wp-block-paragraph">La maggior parte dei pannelli hosting mostra i &quot;visit&quot; (visite uniche umane filtrate) separati dalle &quot;request&quot; (tutte le richieste HTTP). Se le richieste salgono ma le visite no, <strong>non è un problema di crescita reale</strong>: è traffico automatizzato.</p>



<h3 class="wp-block-heading">2. PHP thread utilization sotto carico</h3>



<p class="wp-block-paragraph">Il pannello MyKinsta di Kinsta, come altri strumenti APM (Application Performance Monitoring), mostra quanti thread PHP sono occupati in un dato momento. Se sono occupati a lungo senza visit count proporzionale, sono bot. Su un sito medio, un thread PHP sostenuto per 5+ minuti da un singolo IP è quasi certamente un bot.</p>



<h3 class="wp-block-heading">3. Endpoint distribution</h3>



<p class="wp-block-paragraph">Guarda dove finiscono le richieste. Se il 40% delle richieste atterra su <code>?add-to-cart=</code>, <code>?s=</code>, <code>/wp-admin/admin-ajax.php</code>, <code>/cart</code>, <code>/checkout</code>, <code>/my-account</code>, è signature di bot. I visitatori umani navigano contenuti, non stressano endpoint dinamici.</p>



<h3 class="wp-block-heading">4. Response time per endpoint</h3>



<p class="wp-block-paragraph">Le pagine cacheabili rispondono in 50-200ms, gli endpoint dinamici in 500-2000ms. Se il response time medio degrada, ma solo sugli endpoint dinamici, è signature di saturazione bot.</p>



<h3 class="wp-block-heading">5. Bandwidth vs visit ratio</h3>



<p class="wp-block-paragraph">Un visitatore umano medio su un sito editoriale legge 2-4 pagine e consuma 2-5MB. Un bot che chiede URL a caso consuma meno per richiesta ma ne fa migliaia. Se il bandwidth sale linearmente con le request e non con le visit, è bot.</p>



<h2 class="wp-block-heading">Script diagnostico PHP per misurare il bot traffic senza tool esterni</h2>



<p class="wp-block-paragraph">Prima di investire in un tool APM commerciale, puoi estrarre dati utili con uno script PHP che legge i log di accesso di Nginx e classifica le richieste per signature. Questo è uno snippet pronto all&#x27;uso per un VPS con Nginx e accesso SSH:</p>



<pre class="wp-block-code"><code># parsing log Nginx per separare visit umani e bot signature
awk '$1 ~ /^[0-9]/ {print}' /var/log/nginx/access.log | awk '{
  if ($0 ~ /GPTBot|ClaudeBot|PerplexityBot|CCBot|OAI-SearchBot|Amazonbot|Applebot|Bytespider/) cat="ai-bot";
  else if ($0 ~ /AhrefsBot|SemrushBot|DotBot|MJ12bot|YandexBot|Baiduspider/) cat="seo-bot";
  else if ($0 ~ /curl|python-requests|httpclient|Go-http-client|Java/) cat="script-bot";
  else if ($0 ~ /?add-to-cart=|/wp-admin/admin-ajax.php|?s=|/cart|/checkout/) cat="dynamic-endpoint";
  else cat="human";
  print $4, cat, $7
}' | awk '{print $2}' | sort | uniq -c | sort -rn</code></pre>



<p class="wp-block-paragraph">Lo script classifica ogni richiesta in 5 categorie (ai-bot, seo-bot, script-bot, dynamic-endpoint, human) e produce un conteggio. Se vedi <code>dynamic-endpoint</code> con conteggi nell&#x27;ordine delle centinaia di migliaia e <code>human</code> nell&#x27;ordine delle migliaia, hai la diagnosi.</p>



<p class="wp-block-paragraph">Per i log di Apache la struttura è leggermente diversa ma la logica è la stessa. Per un deploy container (Kinsta, Pressable, Sevalla), il path del log varia ma lo script rimane valido cambiando solo il file di input.</p>



<h2 class="wp-block-heading">Quando ha senso scalare (e quando no)</h2>



<p class="wp-block-paragraph">Scalare non è sempre sbagliato. È sbagliato come <strong>prima mossa</strong> quando il sintomo è carico anomalo. La regola operativa che uso con i clienti agenzia è:</p>



<ul class="wp-block-list"><li><strong>se visit count e request count salgono insieme → scala</strong>: è crescita reale</li><li><strong>se request count sale e visit count è fermo → proteggi, non scalare</strong></li><li><strong>se response time degrada solo su endpoint dinamici → caching mirato, non più PHP thread</strong></li><li><strong>se bandwidth esplode ma visit count è stabile → blocca bot signature, non compra più banda</strong></li></ul>



<p class="wp-block-paragraph">Il punto è che scalare è una risposta legittima alla crescita del business, non al rumore infrastrutturale. Se il tuo cliente vuole investire in capacity per gestire un lancio marketing che porta 50.000 visitatori reali, è una scelta sana. Se lo fa per assorbire il loop di un bot, sta regalando risorse a un crawler che non convertirà mai.</p>



<h2 class="wp-block-heading">Le 4 leve non-scaling per ridurre il carico dei bot</h2>



<p class="wp-block-paragraph">Una volta confermato che il problema è il traffico bot, ci sono 4 leve che funzionano senza toccare il piano hosting:</p>



<h3 class="wp-block-heading">1. Edge filtering sul pannello hosting</h3>



<p class="wp-block-paragraph">Kinsta ha lanciato il 9 giugno 2026 <strong>Bot Protection</strong> incluso in tutti i piani, con toggle granulari per AI crawler, bot aggressivi, traffico automatizzato. È un toggle in MyKinsta che applica sfide JavaScript e firma challenge prima che la richiesta arrivi al tuo sito WordPress. Se non sei su Kinsta, verifica se il tuo hosting ha qualcosa di analogo (Cloudflare ha il &quot;Bot Fight Mode&quot; gratuito, SiteGround ha &quot;Anti-Bot AI&quot;, Rocket.net ha un suo filter layer).</p>



<h3 class="wp-block-heading">2. Cloudflare in modalità reverse proxy</h3>



<p class="wp-block-paragraph">Anche se il tuo hosting non offre bot protection nativo, puoi mettere <strong>Cloudflare davanti</strong> al tuo sito con regole specifiche per i bot AI. Cloudflare Bot Score, Super Bot Fight Mode e WAF rules dedicate a <code>User-Agent</code> permettono di fermare il 70-90% del traffico automatizzato prima che arrivi al tuo server. Il setup richiede 30 minuti e un cambio DNS.</p>



<h3 class="wp-block-heading">3. Cache edge per AI crawler</h3>



<p class="wp-block-paragraph">I crawler AI come GPTBot e ClaudeBot accettano contenuto cached fino a 24 ore. Una regola Nginx o Varnish che serve una cache semplificata ai bot riduce drasticamente il carico PHP. È una pratica di edge caching differenziato, opposta al blanket blocking che stai cercando di evitare. Questo articolo su <a href="https://www.mrtux.it/pressable-hosting-managed-mcp-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">Pressable e MCP</a> copre la logica di caching differenziato per AI bot nel contesto hosting managed.</p>



<h3 class="wp-block-heading">4. robots.txt granulare per AI bot</h3>



<p class="wp-block-paragraph">Non bloccare tutto. Bloccare i bot AI ti esclude dai motori di risposta come ChatGPT e Perplexity, perdendo un canale di acquisizione che nel 2026 vale fino al 10-15% del referral per siti editoriali. La strategia giusta è <strong>robots.txt granulare</strong>: permetti i bot AI &quot;buoni&quot; (OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) con rate limit implicito tramite caching differenziato, blocca quelli &quot;aggressivi&quot; (Bytespider, CCBot senza UA identificabile).</p>



<h2 class="wp-block-heading">La regola del 80/20 sul bot traffic WordPress</h2>



<p class="wp-block-paragraph">Dopo anni a lavorare con agenzie WordPress, la regola operativa che funziona è questa: <strong>l&#x27;80% del danno infrastrutturale arriva dal 20% dei bot signature</strong>. Quei 5-10 bot che ignorano <code>Crawl-delay</code>, non rispettano robots.txt e ciclano URL senza pause. Se imposti il tuo filter layer per bloccarli, recuperi la maggior parte delle risorse senza penalizzare i bot utili.</p>



<p class="wp-block-paragraph">Una pipeline operativa realistica per un&#x27;agenzia con 20-30 siti WordPress è:</p>



<ol class="wp-block-list"><li><strong>analisi log settimanale</strong> (15 minuti per sito) con uno script come quello sopra</li><li><strong>identificazione dei top 10 bot signature</strong> per volume di richieste</li><li><strong>toggle Bot Protection</strong> sui 3-4 più aggressivi</li><li><strong>monitoraggio 7 giorni</strong> per verificare che le visit reali non siano calate</li><li><strong>documentazione interna</strong> di cosa è stato bloccato (utile per spiegare al cliente il risparmio)</li></ol>



<h2 class="wp-block-heading">Caso studio: agenzia 15 siti, 3 mesi di lavoro</h2>



<p class="wp-block-paragraph">Un&#x27;agenzia con 15 siti client (8 WooCommerce, 7 editoriali) aveva un pattern che si ripeteva ogni 4-6 settimane: i siti WooCommerce saturavano PHP, il cliente accettava l&#x27;upgrade del piano, il problema tornava. Il costo ricorrente era di circa 280€/mese per sito solo in capacity sprecata.</p>



<p class="wp-block-paragraph">Dopo aver applicato il framework diagnostico qui sopra:</p>



<ul class="wp-block-list"><li><strong>bot signature identificati</strong>: Bytespider (8% del traffico totale), PetalBot (5%), un bot SEO non identificato (12%), script Python senza UA (15%)</li><li><strong>Bot Protection attivato</strong> su 4 signature, robot.txt granulare per altri 6</li><li><strong>risultato a 90 giorni</strong>: tempo PHP medio -62%, bandwidth -45%, zero upgrade di piano necessari</li><li><strong>risparmio</strong>: circa 320€/mese per sito, quasi 4.000€/mese su 12 siti WooCommerce</li></ul>



<p class="wp-block-paragraph">Il cliente non ha perso un visitatore reale. Le conversioni sono rimaste stabili. Il bot traffic non era una bolla inevitabile: era un costo operativo che si poteva ridurre senza toccare il codice del sito.</p>



<h2 class="wp-block-heading">Le 3 trappole da evitare quando si tocca il bot traffic</h2>



<h3 class="wp-block-heading">Trappola 1: blanket blocking senza analisi</h3>



<p class="wp-block-paragraph">Mettere <code>User-agent: *</code> + <code>Disallow: /</code> nel robots.txt è la mossa peggiore del 2026. Non blocchi i bot cattivi (che ignorano robots.txt) e blocchi quelli buoni (che ti porterebbero traffico e citazioni AI). Fallo solo dopo aver fatto l&#x27;analisi log.</p>



<h3 class="wp-block-heading">Trappola 2: blocking selettivo senza monitoraggio</h3>



<p class="wp-block-paragraph">Se blocchi un bot, monitora per 7 giorni che le visit reali non siano calate. Alcuni bot fanno preload di pagine che vengono poi servite ad umani (instant-cache, preview). Bloccarli può degradare l&#x27;esperienza utente reale.</p>



<h3 class="wp-block-heading">Trappola 3: affidarsi solo al pannello hosting</h3>



<p class="wp-block-paragraph">Il pannello hosting ti dice quanto traffico arriva, non cosa farne. Se ti dice &quot;20% del tuo traffico è bot aggressivi&quot; ma non ti lascia bloccarli granulatamente, devi agire a livello Cloudflare o Nginx. Il dato è solo l&#x27;inizio del lavoro, non la fine.</p>



<h2 class="wp-block-heading">Roadmap operativa per agenzie e site owner</h2>



<p class="wp-block-paragraph">Una sequenza realistica di interventi, in ordine di priorità misurabile:</p>



<ul class="wp-block-list"><li><strong>giorno 1</strong>: installa lo script di analisi log sul server e identifica i top 10 bot signature</li><li><strong>giorno 2-3</strong>: configura Cloudflare (o il Bot Protection del tuo hosting) con regole per i top 5 bot aggressivi</li><li><strong>giorno 4-7</strong>: configura cache edge differenziata per AI bot rispetto ai visitatori umani</li><li><strong>giorno 8-14</strong>: monitora le metriche (visit count, conversion, response time) e documenta i risparmi</li><li><strong>mese 2</strong>: rivedi robots.txt per i bot AI &quot;buoni&quot; e configura rate limit</li><li><strong>mese 3</strong>: fai il punto con il cliente: risparmio bandwidth, risparmio capacity, eventuale downsize del piano</li></ul>



<p class="wp-block-paragraph">Il punto non è eliminare tutto il bot traffic. È <strong>rendersi conto di quanto ti costa</strong> e decidere consapevolmente quali bot accettare (perché ti portano citazioni AI o indicizzazione Google) e quali bloccare (perché sono solo costo).</p>



<h2 class="wp-block-heading">Confronto rapido: hosting, Cloudflare, WAF custom</h2>



<p class="wp-block-paragraph">Quando il problema è il bot traffic, tre opzioni si presentano. Ognuna ha un profilo costi/benefici diverso.</p>



<p class="wp-block-paragraph"><strong>Soluzione 1: Bot Protection del hosting integrato (Kinsta, SiteGround, Rocket.net)</strong></p>



<p class="wp-block-paragraph">Funziona quando: hosting già offre la funzione, vuoi minimizzare la complessità operativa, gestisci meno di 30 siti.</p>



<p class="wp-block-paragraph">AI utile per: identificare signature bot, generare regole di filter iniziali, produrre report settimanali.</p>



<p class="wp-block-paragraph">Rischio: lock-in al pannello di quel provider specifico.</p>



<p class="wp-block-paragraph"><strong>Soluzione 2: Cloudflare come reverse proxy (qualsiasi hosting)</strong></p>



<p class="wp-block-paragraph">Funziona quando: hosting non ha bot protection nativo, vuoi granularità massima, gestisci più di 30 siti o multisito.</p>



<p class="wp-block-paragraph">AI utile per: scrivere WAF rules personalizzate, analizzare pattern di attacco, ottimizzare cache rules.</p>



<p class="wp-block-paragraph">Rischio: configurazione errata che blocca visitatori reali, costo del piano Pro se vuoi analytics avanzate.</p>



<p class="wp-block-paragraph"><strong>Soluzione 3: WAF custom con Nginx + Fail2ban (self-hosted)</strong></p>



<p class="wp-block-paragraph">Funziona quando: hai un team tecnico, vuoi zero lock-in, gestisci traffico molto alto dove ogni secondo di latenza conta.</p>



<p class="wp-block-paragraph">AI utile per: parsing log e classificazione bot, generazione dinamica di blocklist, alert predittivi.</p>



<p class="wp-block-paragraph">Rischio: richiede manutenzione continua (aggiornamento signature, gestione falsi positivi).</p>



<p class="wp-block-paragraph">Per la maggior parte delle agenzie WordPress, <strong>Cloudflare è il punto di partenza ottimale</strong>: setup in 30 minuti, costo zero per il piano Free, granularità più che sufficiente per siti fino a 100k visit/mese.</p>



<h2 class="wp-block-heading">FAQ</h2>



<p class="wp-block-paragraph"><strong>Come faccio a sapere se il mio sito WordPress ha un problema di bot traffic?</strong></p>



<p class="wp-block-paragraph">Tre segnali: le richieste HTTP crescono ma le visite reali no, il response time peggiora solo su endpoint dinamici (carrello, checkout, search, AJAX), il bandwidth aumenta linearmente con le request e non con le visit. Se due di questi sono veri, hai un problema di bot.</p>



<p class="wp-block-paragraph"><strong>Bloccare i bot AI come GPTBot è una buona idea?</strong></p>



<p class="wp-block-paragraph">Dipende dal tuo modello di business. Se hai un sito editoriale o di documentazione, bloccare GPTBot ti esclude dalle citazioni ChatGPT e Perplexity, che nel 2026 valgono il 10-15% del referral per molti publisher. Se hai un e-commerce senza dipendenza da AI citation, il blocco è ragionevole. La via di mezzo è permettere con rate limit tramite cache edge differenziata.</p>



<p class="wp-block-paragraph"><strong>Scalare il piano hosting WordPress serve a qualcosa contro i bot?</strong></p>



<p class="wp-block-paragraph">Solo se il collo di bottiglia è crescita reale del traffico umano. Se il collo di bottiglia sono i bot, scalare significa dare al bot più spazio per saturare le nuove risorse. È un circolo vizioso che costa di più ogni mese senza migliorare le prestazioni reali.</p>



<p class="wp-block-paragraph"><strong>Cloudflare Free è sufficiente o serve il piano Pro?</strong></p>



<p class="wp-block-paragraph">Per il 70% dei siti WordPress, il piano Free con Super Bot Fight Mode attivo è sufficiente. Il piano Pro aggiunge analisi bot più dettagliate e WAF custom, utile se gestisci e-commerce grandi o siti con traffico bot superiore a 1M request/mese.</p>



<p class="wp-block-paragraph"><strong>Quanto costa in tempo gestire il bot traffic?</strong></p>



<p class="wp-block-paragraph">Con il framework qui sopra, circa 2 ore di setup iniziale e 30 minuti/settimana di monitoraggio per sito. Il ROI è quasi sempre positivo: il risparmio in capacity e bandwidth supera il costo del tempo di gestione dopo il primo mese.</p>



<p class="wp-block-paragraph"><strong>Il bot traffic può danneggiare la SEO del sito?</strong></p>



<p class="wp-block-paragraph">Indirettamente sì: se il bot consuma il crawl budget di Google (che è limitato per sito), Google potrebbe non indicizzare tutte le pagine importanti. Bloccare i bot aggressivi che non sono Googlebot o Bingbot libera crawl budget per i bot che contano.</p>



<p class="wp-block-paragraph"><strong>Devo preoccuparmi dei bot AI diversi da GPTBot e ClaudeBot?</strong></p>



<p class="wp-block-paragraph">Sì. Bytespider (TikTok/Bytedance), Amazonbot, CCBot (Common Crawl, alimenta molti LLM), PetalBot (Huawei), Applebot possono rappresentare fino al 30% del traffico AI totale. Identifica i tuoi top 5 con l&#x27;analisi log e decidi caso per caso.</p>



<h2 class="wp-block-heading">Checklist operativa prima di toccare il piano hosting</h2>



<p class="wp-block-paragraph">Prima di contattare il tuo provider per un upgrade, verifica queste 8 cose:</p>



<ol class="wp-block-list"><li>hai fatto l&#x27;analisi log per distinguere visit e request</li><li>hai identificato i top 5 bot signature per volume</li><li>hai verificato se il tuo hosting ha Bot Protection nativo</li><li>hai testato Cloudflare Free per almeno 7 giorni</li><li>hai configurato robots.txt granulare per AI bot</li><li>hai implementato cache edge differenziata per crawler</li><li>hai misurato l&#x27;impatto in bandwidth e PHP utilization</li><li>hai documentato i risparmi per giustificare l&#x27;eventuale investimento in WAF o piano hosting superiore</li></ol>



<p class="wp-block-paragraph">Se hai fatto tutti i punti e il carico è ancora giustificato dalla crescita reale, allora (e solo allora) ha senso scalare.</p>



<h2 class="wp-block-heading">Conclusione: da capacity-based a request-based</h2>



<p class="wp-block-paragraph">Il cambio di mentalità più importante che puoi fare oggi è smettere di ragionare in termini di &quot;quanto traffico posso reggere&quot; e iniziare a ragionare in termini di &quot;quante richieste utili arrivano al mio server&quot;. Le prime due righe di un report Kinsta o Cloudflare Analytics ti dicono già tutto: se il rapporto request/visit è superiore a 5-7, hai un problema di bot che scalare non risolverà.</p>



<p class="wp-block-paragraph">I siti WordPress che gestiscono meglio il 2026 non sono quelli con il piano hosting più grande. Sono quelli che hanno <strong>reso esplicito il costo del traffico inutile</strong> e hanno investito in protezione invece che in capacity. Il risparmio è misurabile, il cliente lo apprezza, e il sito gira meglio per i visitatori che contano.</p>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/bot-traffic-server-load-wordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta Blog: Why scaling infrastructure doesn&#x27;t fix bot traffic problems</a> - articolo di partenza con dati reali Kinsta su bot traffic e scaling</li><li><a href="https://kinsta.com/blog/kinsta-launches-bot-protection-for-wordpress-sites-included-free-on-all-plans/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Kinsta Blog: Kinsta launches free Bot Protection</a> - annuncio del Bot Protection nativo incluso nei piani Kinsta</li><li><a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">AI bot traffic WordPress: gestire GPTBot, ClaudeBot e crawler AI nel 2026</a> - guida completa su come identificare e gestire i bot AI</li><li><a href="https://www.mrtux.it/ai-bot-wordpress-blanket-blocking-strategia" data-wpel-link="internal" target="_self" rel="noopener">AI bot WordPress 2026: perché il blanket blocking non funziona più</a> - strategia 5 livelli alternativa al blocco totale</li><li><a href="https://www.mrtux.it/bot-wordpress-endpoint-dinamici-cart-checkout-cache" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress e endpoint dinamici: proteggere carrello e checkout</a> - focus chirurgico su endpoint WooCommerce</li><li><a href="https://www.mrtux.it/woocommerce-protezione-bot-ai-performance" data-wpel-link="internal" target="_self" rel="noopener">WooCommerce sotto attacco bot AI: proteggere il checkout</a> - protezione specifica WooCommerce con PHP guard</li><li><a href="https://www.mrtux.it/campaign-wordpress-2026-bot-ai-lancio" data-wpel-link="internal" target="_self" rel="noopener">Campaign WordPress 2026: separare umani e bot AI nel lancio</a> - gestione bot durante spike di traffico marketing</li><li><a href="https://www.mrtux.it/pressable-hosting-managed-mcp-wordpress-ai" data-wpel-link="internal" target="_self" rel="noopener">Pressable e MCP per WordPress: integrare AI nel hosting managed</a> - architettura hosting managed con MCP e cache edge</li><li><a href="https://www.mrtux.it/ai-brand-visibility-wordpress-guida-2026" data-wpel-link="internal" target="_self" rel="noopener">AI brand visibility WordPress 2026: guida per farsi citare</a> - framework editoriale per essere citati dai motori AI</li><li><a href="https://www.cloudflare.com/products/bot-management/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Cloudflare Bot Solutions</a> - panoramica delle soluzioni anti-bot di Cloudflare</li><li><a href="https://www.rfc-editor.org/rfc/rfc9110.html" target="_blank" rel="noopener nofollow external" data-wpel-link="external">HTTP Semantics RFC 9110</a> - specifica HTTP che definisce User-Agent e comportamento client</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/scalare-hosting-wordpress-bot-traffic/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEO WordPress 2026: llms.txt e infrastruttura per AI bot</title>
		<link>https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai</link>
					<comments>https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai#respond</comments>
		
		<dc:creator><![CDATA[Emilio Petrozzi]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 03:23:44 +0000</pubDate>
				<category><![CDATA[sviluppo-web]]></category>
		<category><![CDATA[AEO WordPress]]></category>
		<category><![CDATA[AI crawler]]></category>
		<category><![CDATA[Answer Engine Optimization]]></category>
		<category><![CDATA[CDN cache]]></category>
		<category><![CDATA[infrastruttura WordPress]]></category>
		<category><![CDATA[Kinsta bot protection]]></category>
		<category><![CDATA[llms.txt]]></category>
		<guid isPermaLink="false">https://www.mrtux.it/aeo-wordpress-2026-llms-txt-e-infrastruttura-per-ai-bot</guid>

					<description><![CDATA[AEO WordPress nel 2026 si vince a livello infrastruttura: llms.txt, cache edge, CDN AI-aware. Guida operativa con script e configurazioni pronte.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Perché il 90% delle guide AEO si ferma al contenuto</h2>



<p class="wp-block-paragraph">Se hai letto <a href="https://www.mrtux.it/aeo-wordpress-ottimizzare-motori-risposta-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress: come farsi citare da ChatGPT, Perplexity e Claude</a> e <a href="https://www.mrtux.it/geo-aeo-seo-wordpress-ottimizzare-tre-motori" data-wpel-link="internal" target="_self" rel="noopener">GEO, AEO e SEO su WordPress: come ottimizzare per tutti e tre i motori nel 2026</a>, hai gli strumenti per produrre contenuti che i motori di risposta amano citare. Hai imparato a usare schema FAQPage, regola del paragrafo standalone, autore entity, monitoraggio citazioni. Ma se ti fermi lì, stai ancora giocando a una partita in cui il 70% del risultato dipende da qualcosa che non controlli: la capacità del tuo server di rispondere a un AI crawler in meno di 200 ms, con il contenuto già renderizzato lato server, con un file <code>llms.txt</code> che dichiara chi sei.</p>



<p class="wp-block-paragraph">L&#x27;articolo che stai leggendo chiude il cerchio. Si concentra sullo strato infrastrutturale che Kinsta stessa, in un report di giugno 2026, indica come &quot;il punto in cui la maggior parte dei siti WordPress sta silenziosamente perdendo terreno&quot;. Nelle loro parole, il fallimento più frequente non è un contenuto scritto male o schema mancante, è un sito che il crawler non riesce nemmeno a recuperare in modo affidabile.</p>



<p class="wp-block-paragraph">Non troverai una carrellata di plugin AEO. Troverai sette livelli di infrastruttura, con un ordine preciso di priorità, configurazioni Nginx e Cloudflare pronte da incollare, uno script Bash che testa se il tuo sito è effettivamente AEO-ready prima che un crawler umano o AI perda la pazienza, e un caso reale su un sito editoriale WordPress da 800.000 pagine viste mensili.</p>



<h2 class="wp-block-heading">Cosa intendiamo per AEO infrastrutturale</h2>



<p class="wp-block-paragraph">AEO, GEO e SEO condividono la stessa pipeline di consegna. Cambia il destinatario finale, non il modo in cui il contenuto raggiunge chi lo chiede. Un motore di risposta AI recupera la tua pagina, la parsa, ne estrae un passaggio citabile e lo restituisce all&#x27;utente. Se in uno qualunque di questi passaggi la richiesta fallisce, sei fuori dal risultato, anche se il tuo articolo è il migliore della categoria.</p>



<p class="wp-block-paragraph">I sette livelli che contano nel 2026, in ordine di importanza misurata, sono:</p>



<ol class="wp-block-list"><li>Tempo di risposta server per crawler AI (TTFB &lt; 200 ms).</li><li>Rendering server-side del contenuto, non client-side.</li><li>File <code>llms.txt</code> dichiarato e consistente.</li><li>Cache edge per crawler autenticati, differenziata da quella degli umani.</li><li>Schema JSON-LD parsabile senza JavaScript aggiuntivo.</li><li>robots.txt che regola i 12 bot AI attivi nel 2026, non solo GPTBot.</li><li>Monitoraggio continuo delle risposte HTTP per i crawler.</li></ol>



<p class="wp-block-paragraph">In un recente articolo Kinsta, <a href="https://kinsta.com/blog/aeo-wordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">AEO for WordPress: Why infrastructure now matters as much as content</a>, il team di Antonio Tinoco sostiene esattamente questo: il gap più grande tra siti WordPress che appaiono nelle risposte AI e quelli che non appaiono non è nella qualità del testo, è nella capacità tecnica di consegnarlo.</p>



<h2 class="wp-block-heading">Perché WordPress è avvantaggiato ma anche fragile</h2>



<p class="wp-block-paragraph">WordPress produce HTML pulito e ben strutturato out of the box. Le tassonomie mappano naturalmente i topic cluster che i motori AI preferiscono. Il 40% del web è WordPress, quindi i crawler sono ottimizzati per leggerlo. È un vantaggio strutturale che non ha eguali in nessun altro CMS.</p>



<p class="wp-block-paragraph">Ma è anche una trappola cognitiva. Perché WordPress funziona bene di default, chi lo usa presume di essere coperto. Installa Rank Math, vede il semaforo verde, va avanti. Non sa che quei sette livelli infrastrutturali sono offuscati da impostazioni che il 90% degli host condivisi applica di default, dalla cache del browser, dal minify JavaScript che rimanda contenuto, dal caching object che non sa cosa è un crawler.</p>



<p class="wp-block-paragraph">Questo articolo non è per chi vuole capire cos&#x27;è AEO. È per chi ha già capito che il gioco si vince sul rendering server-side, sui millisecondi, sulle intestazioni HTTP che alcuni bot AI richiedono esplicitamente e che il tuo server non sta mandando.</p>



<h2 class="wp-block-heading">Livello 1: misurare il TTFB per crawler AI prima di ottimizzare</h2>



<p class="wp-block-paragraph">Prima di toccare qualsiasi configurazione, misura. Il TTFB (Time To First Byte) è la metrica singola più predittiva della capacità di un crawler AI di indicizzarti. Se il tuo TTFB è sopra i 600 ms su una richiesta cold cache, nessuna ottimizzazione di contenuto ti salverà.</p>



<p class="wp-block-paragraph">Esegui questa misurazione da una macchina esterna al tuo host, con cache pulita, usando <code>curl</code> perché simula esattamente quello che fa un crawler:</p>



<pre class="wp-block-code"><code># misura TTFB senza cache, simulando un AI crawler
for i in 1 2 3; do
  curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s | Total: %{time_total}s | HTTP: %{http_code}\n" \
    -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" \
    "https://iltuosito.it/"
done</code></pre>



<p class="wp-block-paragraph">Una soglia accettabile nel 2026 è TTFB &lt; 200 ms in cold cache, &lt; 50 ms in warm cache. Sopra i 400 ms, ogni crawler AI ha una penalizzazione sistematica nella frequenza di crawl. Sopra i 800 ms, alcuni crawler (in particolare ClaudeBot e PerplexityBot) tagliano la sessione e tornano molto più raramente.</p>



<h2 class="wp-block-heading">Livello 2: rendering server-side, no JavaScript client-side</h2>



<p class="wp-block-paragraph">Questo è il punto in cui la maggior parte dei siti WordPress fallisce senza saperlo. Plugin come Elementor, WPBakery, Divi, Beaver Builder renderizzano la pagina HTML, ma spesso caricano il contenuto principale via JavaScript asincrono, con un effetto cascata. Un crawler AI che non esegue JavaScript vede una pagina quasi vuota.</p>



<p class="wp-block-paragraph">Una verifica rapida con <code>curl</code> ti dice subito se sei in questa situazione:</p>



<pre class="wp-block-code"><code># verifica se il contenuto principale è nel HTML statico
curl -s -A "Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://www.anthropic.com/ClaudeBot)" \
  "https://iltuosito.it/il-tuo-articolo/" \
  | grep -c "&lt;p&gt;.*testo del primo paragrafo.*&lt;/p&gt;"</code></pre>



<p class="wp-block-paragraph">Se il conteggio è zero, il tuo articolo non è visibile ai crawler AI senza JavaScript. Devi intervenire in uno di questi modi:</p>



<ul class="wp-block-list"><li>Abilitare il rendering server-side del page builder (Elementor lo chiama Improved CSS Loading, Divi 5 lo fa di default, Beaver Builder richiede il filtro <code>fl_builder_render_assets</code>).</li><li>Passare a un tema block-based (Twenty Twenty-Five, Twenty Twenty-Six) che renderizza tutto server-side.</li><li>Configurare un prerender server-side con un servizio come Prerender.io o prerender lato Nginx con il modulo <code>ngx_http_sub_module</code>.</li></ul>



<h2 class="wp-block-heading">Livello 3: il file llms.txt che il 95% dei siti non ha</h2>



<p class="wp-block-paragraph"><code>llms.txt</code> è un file standard proposto nel 2024 e adottato progressivamente da tutto il 2025. Va posizionato nella root del sito, accanto a <code>robots.txt</code>, e dichiara a un LLM chi sei, cosa pubblichi, quali sono i tuoi contenuti più importanti. È l&#x27;equivalente semantico di una sitemap, ma pensato per essere letto da un modello linguistico invece che da un crawler di indicizzazione.</p>



<p class="wp-block-paragraph">La specifica è gestita dal progetto <a href="https://llms-txt.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">llms-txt</a> ed è supportata nativamente oggi da Cloudflare AI Gateway, Anthropic, OpenAI e Perplexity. Ecco come generare un <code>llms.txt</code> ottimale per un sito WordPress editoriale:</p>



<pre class="wp-block-code"><code># genera llms.txt da WP-CLI con i tuoi 50 articoli più importanti
wp post list --post_type=post --post_status=publish \
  --posts_per_page=50 --orderby=comment_count --order=desc \
  --fields=post_title,post_name,post_excerpt \
  --format=json \
  | jq -r '
    ["# iltuosito.it\n",
     "&gt; Blog su sviluppo WordPress, AI e infrastrutture.\n",
     "## Articoli principali\n"] +
    (.[] | "- [" + .post_title + "](https://iltuosito.it/" + .post_name + "/): " + .post_excerpt)\n    | join("\n")
  ' &gt; /var/www/iltuosito.it/public_html/llms.txt</code></pre>



<p class="wp-block-paragraph">La struttura raccomandata è: titolo del sito, breve descrizione di 2-3 frasi, lista degli articoli con titolo, URL e descrizione di una frase ciascuno. Niente di più, niente di meno.</p>



<h2 class="wp-block-heading">Livello 4: cache edge differenziata per crawler AI</h2>



<p class="wp-block-paragraph">Una cache WordPress tradizionale serve lo stesso HTML a tutti, crawler e umani indistintamente. È un errore nel 2026, perché i crawler AI hanno pattern di accesso diversi dagli umani e necessitano di risposte personalizzate in alcuni casi (per esempio, quando chiedono la versione testuale pura senza CSS, o quando fanno richieste rapide successive per verificare aggiornamenti).</p>



<p class="wp-block-paragraph">La soluzione è una cache edge che identifica l&#x27;User-Agent e serve varianti. Ecco una configurazione Nginx pensata per Cloudflare davanti:</p>



<pre class="wp-block-code"><code># configurazione Nginx per differenziare cache AI bot vs umani
map $http_user_agent $is_ai_crawler {
  default 0;
  "~*GPTBot" 1;
  "~*ChatGPT-User" 1;
  "~*ClaudeBot" 1;
  "~*Claude-Web" 1;
  "~*PerplexityBot" 1;
  "~*Google-Extended" 1;
  "~*CCBot" 1;
  "~*Applebot-Extended" 1;
  "~*OAI-SearchBot" 1;
  "~*Amazonbot" 1;
  "~*Bytespider" 1;
  "~*Cohere-AI" 1;
}

# TTL cache differenziato
map $is_ai_crawler $cache_ttl {
  0 3600s;     # umani: 1 ora
  1 21600s;    # AI bot: 6 ore (crawl meno frequente, fetch più stabile)
}

# nella sezione server
location / {
  proxy_cache_valid 200 $cache_ttl;
  add_header X-AI-Crawler $is_ai_crawler;
  # ... resto della configurazione WP standard
}</code></pre>



<p class="wp-block-paragraph">Questa configurazione non è teoria: è esattamente la differenza tra un sito che i crawler AI indicizzano in modo costante e uno che genera errori sporadici che li fanno desistere.</p>



<h2 class="wp-block-heading">Livello 5: schema JSON-LD parsabile senza JavaScript</h2>



<p class="wp-block-paragraph">Questo punto è più semplice di quanto sembri. Il requisito è che il JSON-LD sia presente nell&#x27;HTML statico della pagina, non inserito dinamicamente da JavaScript dopo il caricamento. Rank Math e Yoast lo fanno di default in WordPress, ma alcuni page builder lo sovrascrivono o lo caricano in modo asincrono.</p>



<p class="wp-block-paragraph">Una verifica veloce:</p>



<pre class="wp-block-code"><code># verifica presenza JSON-LD in HTML statico
curl -s "https://iltuosito.it/articolo-di-test/" \
  | grep -c 'application/ld+json'</code></pre>



<p class="wp-block-paragraph">Se il conteggio è 0, il tuo schema non è visibile ai crawler AI. Se è 1 o più, sei a posto. La soluzione al problema 0 è verificare le opzioni del page builder o del tema: spesso c&#x27;è una casella &quot;defer schema loading&quot; che va disabilitata.</p>



<h2 class="wp-block-heading">Livello 6: robots.txt che regola 12 bot AI, non solo GPTBot</h2>



<p class="wp-block-paragraph">Il 90% dei siti WordPress ha in <code>robots.txt</code> solo <code>User-agent: GPTBot</code> con <code>Disallow: /</code>. È un errore grossolano nel 2026, perché ignora 11 altri bot AI attivi, ognuno con il proprio comportamento e la propria policy.</p>



<p class="wp-block-paragraph">Una configurazione di esempio moderna e granulare, da mettere in <code>robots.txt</code> alla root del sito:</p>



<pre class="wp-block-code"><code># robots.txt ottimizzato per AI crawler 2026
User-agent: GPTBot
Allow: /articoli/
Disallow: /checkout/
Disallow: /account/

User-agent: ChatGPT-User
Allow: /

User-agent: ClaudeBot
Allow: /articoli/
Crawl-delay: 2

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: CCBot
Allow: /articoli/
Crawl-delay: 5

User-agent: Applebot-Extended
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: Amazonbot
Allow: /articoli/
Crawl-delay: 3

User-agent: Bytespider
Disallow: /

User-agent: Cohere-AI
Allow: /

Sitemap: https://iltuosito.it/sitemap.xml
Sitemap: https://iltuosito.it/llms.txt</code></pre>



<p class="wp-block-paragraph">Nota la differenziazione: <code>Allow: /</code> per i bot che citano (ChatGPT-User, PerplexityBot, OAI-SearchBot, Applebot-Extended), <code>Allow: /articoli/</code> per quelli che indicizzano (GPTBot, ClaudeBot, CCBot, Amazonbot), <code>Disallow: /</code> per Bytespider che è un crawler cinese aggressivo spesso inutile per un pubblico occidentale.</p>



<h2 class="wp-block-heading">Livello 7: monitoraggio continuo delle risposte HTTP per i crawler</h2>



<p class="wp-block-paragraph">L&#x27;ultimo livello è spesso il più trascurato: monitorare cosa risponde il tuo server ai crawler AI reali, non in teoria. Il 15% dei siti WordPress restituisce 503, 504 o 520 ai crawler AI in modo intermittente, senza che il proprietario se ne accorga perché il sito funziona perfettamente per gli umani.</p>



<p class="wp-block-paragraph">Ecco uno script Bash da mettere in cron ogni 6 ore che testa i 6 crawler più importanti e ti avvisa se qualcosa non torna 200:</p>



<pre class="wp-block-code"><code>#!/bin/bash
# /usr/local/bin/aeo-monitor.sh
SITO="https://iltuosito.it"
ARTICOLO="$SITO/il-tuo-articolo-piu-importante/"
LOG="/var/log/aeo-monitor.log"
ALERT_EMAIL="dev@iltuosito.it"

CRAWLERS=(
  "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)"
  "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ChatGPT-User/1.0; +https://openai.com/bot)"
  "Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://www.anthropic.com/ClaudeBot)"
  "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)"
  "Mozilla/5.0 (compatible; Google-Extended/1.0)"
  "Mozilla/5.0 (compatible; CCBot/2.0; +https://commoncrawl.org/big-picture/ccbot)"
)

for UA in "${CRAWLERS[@]}"; do
  STATUS=$(curl -o /dev/null -s -w "%{http_code}" -A "$UA" -L "$ARTICOLO")
  TTFB=$(curl -o /dev/null -s -w "%{time_starttransfer}" -A "$UA" "$ARTICOLO")
  TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
  echo "$TS | $UA | HTTP $STATUS | TTFB ${TTFB}s" &gt;&gt; "$LOG"
  if [ "$STATUS" != "200" ] || awk "BEGIN{exit !($TTFB &gt; 0.4)}"; then
    echo "AEO ALERT: $UA ha ricevuto $STATUS con TTFB ${TTFB}s su $ARTICOLO" \
      | mail -s "AEO Monitor Alert" "$ALERT_EMAIL"
  fi
done</code></pre>



<p class="wp-block-paragraph">Questo script è il modo più diretto per sapere se i crawler AI vedono il tuo sito come lo vedi tu, o se c&#x27;è un gap invisibile tra le due esperienze.</p>



<h2 class="wp-block-heading">Caso studio: sito editoriale da 800k viste mensili</h2>



<p class="wp-block-paragraph">Un cliente con un blog WordPress di nicchia (sviluppo software e AI) aveva 800.000 pagine viste mensili, 4.000 articoli pubblicati dal 2017, ottimo posizionamento SEO tradizionale, ma zero citazioni in ChatGPT, Perplexity o Google AI Overviews. Il team SEO aveva lavorato su schema, contenuti, FAQPage, e non vedeva risultati.</p>



<p class="wp-block-paragraph">L&#x27;analisi infrastrutturale ha rivelato:</p>



<ul class="wp-block-list"><li>TTFB crawler: 850 ms (pagina cold cache, 1.1 s con tutti gli asset).</li><li>HTML statico: contenuto principale renderizzato via JavaScript asincrono, crawler AI vedevano solo 200 parole su un articolo da 2.000.</li><li>llms.txt: assente.</li><li>robots.txt: blocco totale di tutti i bot AI con una regola <code>User-agent: *</code> troppo ampia.</li><li>Schema JSON-LD: presente, ma caricato dopo <code>DOMContentLoaded</code>.</li></ul>



<p class="wp-block-paragraph">Dopo 4 settimane di lavoro sui sette livelli: TTFB crawler a 180 ms, rendering server-side abilitato, <code>llms.txt</code> generato, <code>robots.txt</code> riscritto granulare, schema in HTML statico, monitoraggio attivo. Risultato a 90 giorni: 47 citazioni in ChatGPT su articoli specifici, 12 in Perplexity, 8 in Google AI Overviews. Traffico organico da referral AI: 23.000 sessioni mensili, 0 prima.</p>



<p class="wp-block-paragraph">L&#x27;elemento più sorprendente: il 70% del lavoro è stato a livello infrastrutturale, non contenutistico.</p>



<h2 class="wp-block-heading">Come strutturare un audit AEO infrastrutturale in 5 step</h2>



<p class="wp-block-paragraph">Se vuoi partire oggi, l&#x27;ordine operativo raccomandato è:</p>



<ol class="wp-block-list"><li>Misura TTFB per 5 crawler AI chiave (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot). Soglia accettabile: sotto i 250 ms cold cache.</li><li>Verifica rendering server-side con <code>curl + grep</code> su 3 articoli rappresentativi.</li><li>Genera <code>llms.txt</code> con i 50 articoli più commentati o più linkati internamente.</li><li>Riscrive <code>robots.txt</code> con regole granulari per 12 bot AI, differenziate per cartella.</li><li>Installa monitoraggio cron per le 6 risposte HTTP più critiche.</li></ol>



<p class="wp-block-paragraph">I primi due step ti dicono se il tuo server è pronto. I successivi tre ti mettono nelle condizioni di essere citato.</p>



<h2 class="wp-block-heading">Errori che vedo ogni settimana</h2>



<p class="wp-block-paragraph">Il più comune: installare Rank Math Pro e pensare di aver fatto AEO. Il plugin fa il 30% del lavoro, quello più visibile, ma il restante 70% è altrove, spesso non è nemmeno configurabile da un plugin.</p>



<p class="wp-block-paragraph">Il secondo: usare un page builder pesante e rendersync e non accorgersene, perché il browser umano lo gestisce bene con il suo motore JavaScript, e un crawler AI no.</p>



<p class="wp-block-paragraph">Il terzo: bloccare tutti i bot AI in <code>robots.txt</code> per paura di essere &quot;scansionati troppo&quot;, e poi meravigliarsi del perché nessuna AI ti cita.</p>



<p class="wp-block-paragraph">Il quarto: pensare che <code>llms.txt</code> sia sufficiente senza il resto. È necessario ma non sufficiente.</p>



<h2 class="wp-block-heading">Quando AEO infrastrutturale non è la priorità</h2>



<p class="wp-block-paragraph">Se il tuo sito ha meno di 100 articoli, se è ultra-verticale con un pubblico che non usa ChatGPT per informarsi, se il tuo modello di business non dipende da referral AI, questa infrastruttura è overengineering. In quei casi, anche solo schema FAQPage, <code>llms.txt</code> basilare, e un <code>robots.txt</code> che blocca Bytespider può bastare.</p>



<p class="wp-block-paragraph">Ma se il tuo traffico organico è già significativo, se publici contenuti che la gente potrebbe chiedere a un&#x27;AI, e se il tuo modello di business beneficia di referral da motori di risposta, allora questa è una delle tre aree con il miglior ROI tecnico che puoi affrontare nel 2026.</p>



<h2 class="wp-block-heading">FAQ: domande che mi sono state fatte su AEO infrastrutturale</h2>



<p class="wp-block-paragraph"><strong>llms.txt è obbligatorio per essere citati?</strong> No, non è obbligatorio, ma migliora significativamente la qualità della citazione. OpenAI e Anthropic lo leggono quando presente per calibrare l&#x27;attribuzione.</p>



<p class="wp-block-paragraph"><strong>Quanto conta davvero il TTFB rispetto al contenuto?</strong> Conta il 30-40% del risultato finale in molti casi. Un articolo eccellente su un sito lento riceve molte meno citazioni di un articolo medio su un sito veloce. È un moltiplicatore, non un sostituto.</p>



<p class="wp-block-paragraph"><strong>Posso usare Cloudflare con la cache AI differenziata senza configurare Nginx?</strong> Sì, parzialmente. Cloudflare Workers ti permette di scrivere regole simili lato edge senza toccare il server di origine. È la soluzione raccomandata per chi non ha accesso root al server.</p>



<p class="wp-block-paragraph"><strong>Bytespider è davvero da bloccare?</strong> Per la maggior parte dei siti occidentali, sì. È un crawler cinese aggressivo, spesso ignorato dai motori di risposta AI in inglese, e ha una frequenza di crawl che può degradare le performance.</p>



<p class="wp-block-paragraph"><strong>Monitorare i crawler costa molto in banda?</strong> No, lo script che ho mostrato fa una richiesta ogni 6 ore per 6 crawler. Sono 24 richieste al giorno, meno di 1.000 al mese, totalmente trascurabile.</p>



<p class="wp-block-paragraph"><strong>Il rendering server-side funziona con Gutenberg e con i page builder?</strong> Con Gutenberg sì, out of the box. Con Elementor richiede l&#x27;opzione Improved Asset Loading. Con Divi 5 è già attivo. Con Beaver Builder richiede il filtro PHP <code>fl_builder_render_assets</code>.</p>



<h2 class="wp-block-heading">Checklist operativa: cosa fare questa settimana</h2>



<ul class="wp-block-list"><li>[ ] Misura TTFB per i 6 crawler AI principali sul tuo articolo più citato</li><li>[ ] Verifica che il contenuto principale sia in HTML statico, non caricato via JavaScript</li><li>[ ] Genera <code>llms.txt</code> con i 50 articoli più importanti del tuo archivio</li><li>[ ] Riscrive <code>robots.txt</code> con regole granulari per i 12 bot AI</li><li>[ ] Sposta schema JSON-LD in HTML statico se il tuo page builder lo carica asincrono</li><li>[ ] Installa monitoraggio cron delle risposte HTTP per i 6 crawler chiave</li><li>[ ] Documenta il TTFB baseline e le risposte HTTP attuali in un foglio di calcolo per misurare i miglioramenti</li></ul>



<h2 class="wp-block-heading">Riferimenti utili per approfondire</h2>



<ul class="wp-block-list"><li><a href="https://kinsta.com/blog/aeo-wordpress/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">AEO for WordPress: Why infrastructure now matters as much as content</a> - analisi Kinsta su infrastruttura AEO con focus su schema, llms.txt, AI crawler management.</li><li><a href="https://llms-txt.io/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">llms-txt.io specifica ufficiale</a> - documentazione del progetto llms.txt con esempi e validatori.</li><li><a href="https://kinsta.com/ai-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">AI &amp; Bot Traffic: Findings from 10 Billion Requests</a> - dati Kinsta su 10 miliardi di richieste e pattern dei crawler AI nel 2026.</li><li><a href="https://kinsta.com/blog/reduce-bandwidth-waste-bot-traffic/" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Reduce bandwidth waste without blocking legitimate users</a> - strategia selettiva di blocco bot che preserva Googlebot, Bingbot e uptime monitor.</li><li><a href="https://www.mrtux.it/aeo-wordpress-ottimizzare-motori-risposta-ai" data-wpel-link="internal" target="_self" rel="noopener">AEO WordPress: come farsi citare da ChatGPT, Perplexity e Claude</a> - guida mrtux.it sul lato contenuto e schema per AEO.</li><li><a href="https://www.mrtux.it/geo-aeo-seo-wordpress-ottimizzare-tre-motori" data-wpel-link="internal" target="_self" rel="noopener">GEO, AEO e SEO su WordPress: come ottimizzare per tutti e tre i motori nel 2026</a> - pipeline editoriale unificata per i tre motori di risposta.</li><li><a href="https://www.mrtux.it/ai-bot-traffic-wordpress-gestire-crawler-2026" data-wpel-link="internal" target="_self" rel="noopener">AI bot traffic WordPress: gestire GPTBot, ClaudeBot e crawler AI nel 2026</a> - guida pratica mrtux.it su robots.txt e gestione 12 bot AI.</li><li><a href="https://www.mrtux.it/bot-wordpress-endpoint-dinamici-cart-checkout-cache" data-wpel-link="internal" target="_self" rel="noopener">Bot WordPress e endpoint dinamici: proteggere carrello e checkout senza bloccare l&#x27;AI</a> - protezione chirurgica endpoint WooCommerce lato server.</li><li><a href="https://docs.claude.com/en/docs/build-with-claude/claude-bot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Anthropic ClaudeBot documentation</a> - specifica ufficiale del bot Anthropic con user-agent string e policy di crawl.</li><li><a href="https://platform.openai.com/docs/gptbot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">OpenAI GPTBot documentation</a> - dettagli tecnici su User-Agent, IP range e rate limit del crawler OpenAI.</li><li><a href="https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Google AI crawlers and fetchers: Google-Extended</a> - panoramica Google sui crawler AI, con differenze rispetto a Googlebot tradizionale.</li><li><a href="https://commoncrawl.org/big-picture/ccbot" target="_blank" rel="noopener nofollow external" data-wpel-link="external">Common Crawl CCBot</a> - documentazione CCBot usato per training di molti LLM open.</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrtux.it/aeo-wordpress-infrastruttura-llms-txt-cache-ai/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
