Naar de inhoud

Waardebepaling uitleggen (seo:explain) ​

Rankbeam bepaalt de SEO van een pagina via een keten van lagen met oplopende prioriteit: configuratie, standaardwaarden uit de database (globaal, per modeltype en per route), berekende modelwaarden en tot slot expliciete seo_meta. Daarna volgen nabewerking (titelachtervoegsel, canonieke URL en absolute afbeeldings-URL's) en de indexeringsbeveiliging. Wanneer de gerenderde <title>- of robots-tag afwijkt van wat je verwachtte, laat seo:explain precies zien welke laag elk veld instelde en welke waarden die overschreef.

Het commando is alleen-lezen, heeft geen netwerk of licentie nodig en implementeert het samenvoegen niet opnieuw. De herkomst komt uit de bijdragen van de resolverlagen zelf; de uiteindelijke waarden komen uit de echte resolver. Zo kan de verklaring niet afwijken van wat er werkelijk wordt gerenderd.

Gebruik ​

bash
# Explain a specific record
php artisan seo:explain "App\Models\Post" 42

# Explain the first record of a model
php artisan seo:explain "App\Models\Post"

# With a route-defaults layer and a locale
php artisan seo:explain "App\Models\Post" 42 --route=posts.show --locale=de

# Machine-readable
php artisan seo:explain "App\Models\Post" 42 --json

Het model moet de trait HasSEO gebruiken.

De uitvoer lezen ​

SEO resolution — Post #42  (locale: en, route: posts.show)
Layers, low → high: config · global · model-type · route · computed · explicit

 Field         Final value                    Set by            Overrode
 title         My Post | Acme                 computed          —
                 ↳ title suffix ' | Acme' appended
 description   A hand-written summary…        explicit          computed: "An auto excerpt…"
 canonical     https://acme.com/blog/my-post  post-processing   —
                 ↳ derived from model getUrlForSEO() (query string stripped)
 robots        noindex,nofollow               explicit          config: index,follow
                 ↳ indexing guard forced 'noindex,nofollow' (environment 'staging' …)
 og_image      https://acme.com/share.jpg     explicit          config: /default-og.jpg
                 ↳ absolutized from '/share.jpg'
  • Set by (ingesteld door) — de winnende laag (de laag met de hoogste prioriteit die een niet-nullwaarde instelde), of post-processing wanneer geen enkele laag het veld instelde maar de waarde werd afgeleid: een canonieke URL uit de aanvraag- of model-URL, een og:url uit de canonieke URL of een absolute afbeeldings-URL.
  • Overrode (overschreef) — alle lagen met een lagere prioriteit die een waarde aanleverden maar niet wonnen, op volgorde. Zo zie je welke waarden werden overschreven.
  • ↳ notes (opmerkingen) — nabewerking die de waarde na het samenvoegen veranderde: het titelachtervoegsel, het verwijderen van de querystring uit de canonieke URL, het afleiden van og:url, het absoluut maken van afbeeldings-URL's en de indexeringsbeveiliging die boven alle lagen noindex afdwingt.

og:type en twitter:card

Deze twee hebben niet-nullstandaardwaarden uit het framework (website / summary_large_image). De hoogste laag die ze instelt — normaal gesproken computed — wint daarom van config. Een pagina zonder opgeslagen seo_meta-rij draagt voor deze velden niets bij. Een berekende og:type zoals article wordt dus nooit overschreven door alleen de standaardwaarde website. Dit komt overeen met de manier waarop het samenvoegen werkelijk werkt.

Waarden op siteniveau ​

Zoals beschreven in de aanvulling over het overzicht van de siteconfiguratie, rapporteert seo:explain ook sitebrede waarden waarvan de herkomst vaak verwarrend is: welke bron de canonieke host, de sitenaam en de standaardlocale instelde.

Site-level resolution
 Value           Resolved     Source
 Site name       Acme         env (APP_NAME)
 Default locale  en           config (app.locale)
 Canonical host  acme.com     programmatic (model getUrlForSEO())

Vooral de canonieke host is het controleren waard. Een verkeerde host — een achtergebleven localhost, http:// op een https-site of een applicatie-URL die niet overeenkomt met de model-URL — is een veelvoorkomende oorzaak van fouten in zelfverwijzende canonieke URL's.

JSON-uitvoer ​

--json geeft de volledige herleiding weer voor tooling of CI: target, per veld winner / losers / final / notes, en het overzicht site_level:

json
{
  "target": { "model": "App\\Models\\Post", "id": 42, "route": "posts.show", "locale": "en" },
  "fields": {
    "title": {
      "final": "My Post | Acme",
      "winner": { "layer": "computed", "value": "My Post" },
      "losers": [],
      "notes": ["title suffix ' | Acme' appended"]
    }
  },
  "site_level": {
    "canonical_host": { "value": "acme.com", "source": "programmatic (model getUrlForSEO())" }
  }
}

Zie ook ​

rankbeam/laravel-seo is uitgebracht onder de MIT-licentie.