Aggiornamento da fibonoir/laravel-seo v1
La versione 2.0.0 rinomina il pacchetto in rankbeam/laravel-seo e concentra il core sulla risoluzione dei metadati, il rendering, il JSON-LD e le sitemap. Analisi, scansioni, redirect, monitoraggio 404 e interfaccia di amministrazione passano a pacchetti separati.
1. Sostituire il pacchetto
composer remove fibonoir/laravel-seo
composer require rankbeam/laravel-seo2. Aggiornare i namespace
I nomi delle classi restano invariati; cambia soltanto il namespace radice: Fibonoir\LaravelSEO\* → Rankbeam\Seo\*. Puoi aggiornarlo con una ricerca e sostituzione nel progetto. L’alias della facade SEO e le direttive Blade @seo non cambiano.
3. Rimuovere i file pubblicati obsoleti
Prima di rimuovere file o tabelle, salva una copia della configurazione pubblicata ed esporta i dati coinvolti. Verifica di poterli ripristinare. Questa guida non migra redirect, log 404 o cronologia delle scansioni della v1 nel diverso schema di Pro. La compatibilità delle tabelle del core descritta sotto riguarda soltanto seo_meta e seo_defaults.
I conflitti possono non produrre errori
Il comando seo:install della v1 pubblicava file nell’applicazione che possono entrare in conflitto con il pacchetto v2 senza generare messaggi di errore.
config/seo.php: se proviene dalla v1 o daralphjsmit/laravel-seo, che l’installer della v1 poteva lasciare presente, prevale sulla configurazione del pacchetto e può annullaresite_namee i template{site_name}. Rimuovilo e pubblica la configurazione conphp artisan vendor:publish --tag=seo-config.- Migrazioni della v1 per tabelle che il core non gestisce più:
seo_redirects,seo_404_logs,seo_scan_runs,seo_scan_issues,seo_analytics_cacheeseo_internal_links_index. Rimuovi i file di migrazione. Se le tabelle esistono in produzione, eliminale prima di installarerankbeam/laravel-seo-pro, che le ricrea con uno schema diverso, dopo aver salvato e verificato gli export descritti sopra. - Stub pubblicati in
app/eresources/jsdai percorsi Filament 3, Livewire, Vue e React della v1: fanno riferimento a classi che non esistono più.
Le due tabelle del core, seo_meta e seo_defaults, hanno uno schema compatibile: i loro dati vengono conservati durante l’aggiornamento.
4. Funzioni rimosse e nuova collocazione
| Funzione della v1 | Dove si trova ora |
|---|---|
| Sezione SEO nei form Filament | rankbeam/laravel-seo-filament, gratuito con licenza MIT |
| Analizzatore dei contenuti con 32 regole | Non trasferito: le regole su densità delle parole chiave e parole persuasive non fanno parte di questa migrazione. Il rilevamento dei problemi SEO tecnici è nello scanner di rankbeam/laravel-seo-pro; il punteggio SEO numerico è una funzione Pro ricavata dai problemi rilevati. |
| Scanner dell’intero sito | rankbeam/laravel-seo-pro, con pipeline in coda e dashboard |
| Gestore dei redirect | rankbeam/laravel-seo-pro, con validazione delle regex e protezioni dagli open redirect |
| Monitoraggio 404 | rankbeam/laravel-seo-pro, senza memorizzazione degli IP per impostazione predefinita |
| Analisi GA4 e link interni | Backlog di rankbeam/laravel-seo-pro |
Installer seo:install | Rimosso: installa con Composer, pubblica la configurazione ed esegui le migrazioni |
5. Cambiamenti di comportamento da verificare
og:imageetwitter:imagesono sempre URL assoluti. La v1 emetteva senza conversione i percorsi relativi impostati manualmente.- I canonical derivati non includono la query string. Quelli espliciti vengono conservati così come sono.
- Il rilevamento automatico delle sitemap dà precedenza alle sorgenti registrate: non viene più generato un
sitemap-post.xmlduplicato accanto alsitemap-posts.xmlregistrato. - Il JSON-LD usa l’escaping
JSON_HEX_*. Se elabori l’output grezzo degli script, tieni conto dell’escaping di caratteri come<.
6. Problemi noti
- Il
DatabaseSeederpredefinito di Laravel usaWithoutModelEvents, che disabilita l’hook di creazione automatica diHasSEOnei seeder. - Se un template del titolo nei valori predefiniti della rotta contiene già il marchio, terminalo con il
title_suffixconfigurato: il resolver evita così di aggiungerlo una seconda volta.