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]

Reply via email to