fix(seo): resolve APISIX crawl, indexing, and sitemap issues - #2100
fix(seo): resolve APISIX crawl, indexing, and sitemap issues#2100Yilialinn wants to merge 5 commits into
Conversation
b9a0e8b to
4cae9b3
Compare
kayx23
left a comment
There was a problem hiding this comment.
The historical/next canonical rewrite still produces a local canonical whose target does not exist. docs/apisix/next/plugins/mcp-bridge/ is present in the published asf-site tree and canonicalizes to https://apisix.apache.org/docs/apisix/plugins/mcp-bridge/, but the release/3.17 docs used to generate the versionless Astro pages contain no plugins/mcp-bridge.md, so that final canonical target is a 404. This contradicts the stated canonical-target contract and leaves a crawlable noindex,follow page pointing at a missing canonical. The deployment assertion currently checks only the installation-guide/CORS fixtures, so it does not catch this case. Please make the rewrite conditional on a real latest target (otherwise self-canonicalize or omit the override), and validate every APISIX-local canonical target in the final output rather than only the samples.
Thanks for catching this. Fixed in
The focused ESLint, workflow YAML parsing, positive/missing/empty-directory canonical checks, and an independent code review have passed. The full GitHub workflows have been triggered and are currently queued. |
kayx23
left a comment
There was a problem hiding this comment.
The new exhaustive validator is the right direction, but the fallback canonical fix is not taking effect yet. The current build fails in the new docs/apisix/next/plugins/mcp-bridge/ assertion. When latestDoc is absent, latestUrl becomes null, so this wrapper emits only noindex,follow and leaves OriginalLayoutHead’s existing versionless canonical (/docs/apisix/plugins/mcp-bridge/) unchanged—the missing target we were trying to avoid. Please explicitly override the canonical (and og:url, if kept aligned) to ${siteUrl}${pathname} for a matched historical/next page with no latest-release counterpart, rather than omitting the override. Then rerun the build so the per-page assertion and exhaustive local-target validator both pass.
Addressed in
The full |
Summary
nextdocs crawlable while marking themnoindex,followDetails
Canonical and hreflang
en,zh, andx-defaulthreflang links.docs.api7.aidocs.apiseven.comHistorical docs and crawl handling
nextdocs remain accessible and receivenoindex,follow.robots.txt, allowing crawlers to process canonical and robots directives.getting-startedpaths redirect within the same version and locale.nextpages and verify that canonical targets exist in the final output.Sitemap, redirects, and feeds
next, cross-site canonicals, untranslated fallback pages, redirects, 404s, and low-value aggregate pages are excluded./blog/rss.xml,/blog/atom.xml,/zh/blog/rss.xml, and/zh/blog/atom.xmlare generated again.Validation
npm run buildinnext: passed, 1,331 pages generatednpm run test:sitemap: passednpm run lint: 0 errors; 10 existing content warningsyarn lint:frontmatter: passedeslint, Remark, lint-staged): passedgit diff --check: passedThe standalone production Docusaurus build was not reproduced locally because it depends on freshly synchronized external documentation repositories. The deployment workflow now validates the affected historical pages against that fresh CI data.
Scope safeguards