Add backend-generated sitemap with website manifest sync and nginx SEO proxy support.
Stores synced route config from /meshkee/sitemap-config.json, serves sitemap.xml and robots.txt per tenant, and invalidates cache on CMS writes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
c7d5204b49
commit
2e8d7c1cfd
@@ -85,6 +85,36 @@ Use `slot.key` in the placeholder. Match `pageKey` to the website page. For a si
|
||||
|
||||
`kind` is `single` (one image) or `list` (duplicatable). For a fixed row, set `itemCount` (e.g. `2`). Leave `itemCount` null for an unbounded slider. `aspectRatio` must look like `16:9`. Do not invent CMS/upload APIs.
|
||||
|
||||
### Sitemap (SEO)
|
||||
|
||||
Meshkee generates `https://<WEBSITE_DOMAIN>/sitemap.xml` on the API from published CMS content plus a manifest your site publishes. Nginx on the storefront proxies `/sitemap.xml` and `/robots.txt` to the API — do not hardcode a static sitemap file in the repo unless you know nginx is not proxying yet.
|
||||
|
||||
**Publish route manifest** so the business dashboard can sync static pages and URL templates:
|
||||
|
||||
`GET https://<WEBSITE_DOMAIN>/meshkee/sitemap-config.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"baseUrl": "https://sanihome.ir",
|
||||
"staticPages": [
|
||||
{ "path": "/", "changefreq": "daily", "priority": 1.0 },
|
||||
{ "path": "/about", "priority": 0.6 },
|
||||
{ "path": "/contact", "priority": 0.5 },
|
||||
{ "path": "/blog", "priority": 0.7 }
|
||||
],
|
||||
"templates": {
|
||||
"product": "/products/{slug}",
|
||||
"blog": "/blog/{slug}",
|
||||
"portfolio": "/portfolios/{slug}"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `path` must start with `/`. Do not include checkout, login, or customer-dashboard URLs.
|
||||
- Each `templates` value must include `{slug}` and match how this site routes detail pages.
|
||||
- After deploy, the business owner syncs from **Website → Settings** in the dashboard.
|
||||
- Dynamic URLs (products, blogs, portfolios) come from the CMS; only paths/templates are declared here.
|
||||
|
||||
If OpenAPI and this brief conflict, **OpenAPI wins**.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user