# Due siti, una sola applicazione, e finalmente visibili ai motori di ricerca.

> Il sito di prodotto di una società di consulenza sull'AI risultava con zero pagine indicizzate: le pagine si costruivano solo nel browser e i crawler le vedevano vuote. Lo abbiamo riportato, insieme al sito istituzionale, in un'unica applicazione che genera HTML completo sul server.

- Settore: Servizi alle imprese
- Ambito: Sviluppo software
- Anno: 2026
- URL: https://cloudfactory.it/lavori/due-siti-una-applicazione-laravel-seo/

## In breve

Due siti, uno istituzionale e uno di prodotto, erano pagine singole costruite in JavaScript nel browser, affiancate da un WordPress per la rassegna stampa e i form. Li abbiamo sostituiti con un'unica applicazione Laravel 13 e Filament 5 che sceglie il sito dall'indirizzo richiesto, genera ogni pagina sul server con meta e JSON-LD e ha un solo pannello per pagine, articoli, SEO e richieste. Abbiamo eliminato WordPress e consegnato un server che il cliente può gestire senza di noi.

- **0** pagine indicizzate del sito di prodotto prima del progetto
- **2** siti serviti dallo stesso codice e dallo stesso database
- **148** test automatici verdi prima del go-live
- **15.10.2026** go-live dei due siti insieme

## Contesto

Il cliente è una società di consulenza sull'intelligenza artificiale con un prodotto per gli uffici legali, compliance e acquisti. I due siti erano esportati da uno strumento di design come pagine singole: belle, ma con tutto il testo costruito da JavaScript al caricamento. La rassegna stampa e i form stavano su un WordPress separato, raggiunto con proxy dal server web.

## Il problema

Un crawler che non esegue JavaScript trova una pagina vuota: Search Console riportava zero pagine indicizzate per il sito di prodotto. In più le notifiche dei form del vecchio WordPress non partivano: una richiesta commerciale reale arrivata il 10 ottobre era rimasta ferma senza che nessuno la vedesse.

## Cosa abbiamo fatto

1. **Un'applicazione, due siti.** Laravel 13 e Filament 5 servono entrambi i domini dallo stesso codice e dallo stesso database, scegliendo il sito dall'host della richiesta. Un host non previsto risponde 404, quelli di anteprima mandano noindex.
2. **HTML completo lato server.** Ogni pagina è generata sul server con titolo, meta, JSON-LD e sitemap per sito. Le due pagine singole sono diventate più pagine, con i redirect dai vecchi indirizzi. Gli identificativi del grafo JSON-LD sono rimasti identici, perché un grafo esterno li richiama: un carattere diverso avrebbe rotto il collegamento.
3. **Via WordPress.** I 32 articoli della rassegna e lo storico dei form sono stati importati nel nuovo database. Gli articoli che riproducevano per intero testi di terzi sono diventati un riassunto originale con il link alla fonte. I form inviano notifiche e conferme con Amazon SES, e la richiesta rimasta ferma è stata recuperata e girata al cliente.
4. **Un pannello per la redazione.** Pagine a blocchi, articoli, SEO, richieste dai form e utenti in un solo pannello, con ruoli Admin, Editor e Commerciale e autenticazione a due fattori. Il consenso ai cookie passa da CF-Consent con Consent Mode v2.
5. **Un server che si può consegnare.** Niente pannelli di gestione esterni: il server EC2 sta nell'account AWS del cliente, è costruito da uno script nel repository, si aggiorna con GitHub Actions e Deployer, ha snapshot dei dischi e un dump notturno del database. Il vecchio server è rimasto acceso 14 giorni dopo il go-live per poter tornare indietro.

## Com'è andata

Il 15 ottobre 2026 i due domini sono passati sul nuovo server insieme, con il cambio di due record DNS e il vecchio server pronto per il rollback. Le sitemap sono state inviate a Search Console e le pagine principali sottoposte all'indicizzazione; la redazione lavora dal pannello, e le richieste dai form arrivano a chi deve leggerle.

## Strumenti

Laravel 13, Filament 5, MySQL 8, Blade, JSON-LD, Amazon SES, GitHub Actions, Deployer, AWS EC2

## Domande frequenti

### Perché un sito costruito in JavaScript non viene indicizzato?

Molti crawler, e quasi tutti gli agenti AI, leggono l'HTML che arriva dal server senza eseguire gli script. Se il testo compare solo dopo, per loro la pagina è vuota.

### Conviene servire due siti dalla stessa applicazione?

Quando condividono redazione, tipo di contenuti e infrastruttura sì: un pannello, un database e un server da mantenere al posto di due. Ogni sito resta separato per dominio, SEO e grafica.

### Cosa vuol dire un server consegnabile?

Che il cliente può prenderne il controllo senza dipendere da noi: sta nel suo account, si ricostruisce da uno script documentato e non richiede abbonamenti a strumenti di terzi.

---

Cloudfactory S.r.l., Roma. Contatti: hello@cloudfactory.it
