- saving with IndexNow on generates a 32-hex key (crypto/rand);
indexnow_new_key generates a new one, so the old key file answers 404
- GET /_sitemap/indexnow/{file} serves <key>.txt as text/plain while
IndexNow is on; the SEO layer maps it to the site root
- after each rebuild in production the added, changed and removed
addresses on the site host are queued as golem15.sitemap.indexnow jobs
(at most 10 000 per request, five attempts)
- the job posts {host, key, urlList} to api.indexnow.org through a
fetchguard client limited to that host and records the answer; 429 and
5xx retry, 400, 403 and 422 do not
- the IndexNow tab shows the S2 status partial: key or no key, last
notification or never, and the 403, 422 and 429 callouts
27 lines
1.0 KiB
YAML
27 lines
1.0 KiB
YAML
# golem15.sitemap defaults, read as golem15.sitemap.<key>.
|
|
#
|
|
# site_url is the public site address every <loc> of the sitemaps starts
|
|
# with when the Site address setting is empty; without both, app.url is
|
|
# used. The request's Host is never used. Set it per environment, e.g.:
|
|
#
|
|
# site_url: https://www.example.com
|
|
#
|
|
# lastmod_ignore lists the record attributes whose change does not move an
|
|
# address's lastmod: a save that changes only these (or nothing) leaves it
|
|
# as it was. A host replaces the whole list in its own config.
|
|
lastmod_ignore:
|
|
- updated_at
|
|
- created_at
|
|
- views
|
|
- sort_order
|
|
#
|
|
# rebuild_delay_seconds is how long after a record change the queued
|
|
# rebuild runs; further changes in that time join the same rebuild.
|
|
rebuild_delay_seconds: 60
|
|
#
|
|
# IndexNow has no config key: the endpoint is fixed at
|
|
# https://api.indexnow.org/indexnow (the only host the plugin's outbound
|
|
# client may reach), the key is generated in the settings and stored in the
|
|
# database, and requests are sent only when the app environment is
|
|
# production.
|