moonming opened a new pull request, #2054: URL: https://github.com/apache/apisix-website/pull/2054
## Summary A batch of low-risk, high-value technical SEO fixes for apisix.apache.org. Each is an independent commit. - **Remove redundant hreflang plugin** — Docusaurus already emits `<link rel="canonical">` and hreflang alternate links natively (react-helmet) on every page. `config/hreflang.js` (loaded only by the `website/` instance) re-added a second, *duplicate* plain set, so every `website/` page shipped two sets of hreflang tags. Removing it leaves a single source of truth. Verified: the `doc/` and `blog/` instances never loaded the plugin and already render exactly one correct set. - **Plugin Hub** (`/plugins/`) — title `Plugin Hub` → `Plugin Hub: 100+ API Gateway & AI Plugins`; corrected the stale "80+" count to "100+" (actual built count: **105**); added `CollectionPage` + `ItemList` (enumerates every plugin) and `FAQPage` JSON-LD. - **Homepage** — added `SoftwareApplication` + `FAQPage` JSON-LD. `Organization`/`WebSite` are already injected globally by `config/schema-org.js`. - **Blog index** (`/blog/`) — added a visible `<h1>`; the default Docusaurus blog list ships without one. - **Netlify mirror** — `netlify.toml` sets `X-Robots-Tag: noindex`. Production (`apisix.apache.org`) is served by Apache httpd + Fastly and does **not** read this file; `apache-apisix.netlify.app` is a mirror that should not compete with the canonical site in search. Note: this also de-indexes the archived doc versions hosted on that mirror (`config/apisix-versions.js` → `archivedVersions`), which is intended. ## Test plan - [ ] CI build passes (multi-instance Docusaurus build). - [ ] `/plugins/` `<title>` shows the new text; page source contains `CollectionPage` / `ItemList` / `FAQPage` JSON-LD, and validates in Google's Rich Results Test. - [ ] Homepage source contains `SoftwareApplication` + `FAQPage` JSON-LD and validates in Rich Results Test. - [ ] `/blog/` renders exactly one `<h1>`. - [ ] Every `website/` page emits exactly one set of hreflang + canonical tags (no duplicates) — e.g. `/`, `/plugins/`, `/learning-center/apisix-vs-kong/`. - [ ] `apache-apisix.netlify.app` responses include `X-Robots-Tag: noindex`. ## Verification done locally Config syntax checked; the Plugin Hub JSON-LD was generated against the real `plugins.json` (105 plugins, valid JSON-LD); single-source canonical/hreflang confirmed on the live `doc/`+`blog/` instances. Full multi-instance build verification is delegated to CI. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
