3.9 Public Web Pages
Every page that the public can reach is built to be found and to be shared (decided 2026-11-05): the website at www.moonitoring.com, the articles of MooNitoring News at news.moonitoring.com, and the public pages of the web apps, such as the landing pages of MooGrant. Search engines and link previews read the HTML a page sends, not what a script draws afterwards, so the rules below are checked on the built HTML, in the pull request that changes it.
3.9.1 One Domain, Clean Addresses¶
- Every public site has one host under
moonitoring.com: the websitewww.moonitoring.com, Newsnews.moonitoring.com, with the language as the first segment of the path (news.moonitoring.com/it/<slug>).moonitoring.comanswers a permanent redirect (308) towww. - The sites link to each other: the website links to News in its navigation and footer, every News page links back to the website and to the product pages it mentions, so search engines see one company across its hosts.
- An address is lowercase words joined by hyphens, in the language of the page, and it never changes without a permanent redirect (301) from the old one. A page that is gone answers 410; an address that never existed answers 404 with
noindex. - Every page has one canonical address, absolute, on its site's host. Copies of a site on other hosts (stage, previews, the hosts of our providers) send
X-Robots-Tag: noindexand never become canonical.
3.9.2 Every Language Is Its Own Page¶
- Each language has its own address, with
langon the page andhreflanglinks to the versions that exist, plusx-defaultfor the fallback language. A page never links to a translation that does not exist. - The language is never chosen by a redirect on a deep link. Only the bare domain follows the reader's language; an article whose language is missing redirects (302) to the first translation that exists, and the page says which language it is in.
- The sitemap lists every page with its language alternatives and the date its content last changed; there is one sitemap index for the domain, which
robots.txtnames.
3.9.3 What Every Page Sends¶
| What | Rule |
|---|---|
| Title | Unique, up to 60 characters, the subject first and · MooNitoring last |
| Description | 50 to 160 characters, a sentence that makes someone want to read on |
| Headings | One h1, then h2 and down, in order |
| Images | alt text in the language of the page, width and height, AVIF or WebP in several sizes, lazy below the first screen |
| Structured data | JSON-LD written into the HTML: Organization and WebSite on the home page, NewsArticle on an article (headline, images in 16:9, 4:3 and 1:1, datePublished, dateModified, authors, publisher with its logo), BreadcrumbList on every page below the home page |
| Feeds | An RSS feed per language for News, linked from every News page |
3.9.4 Link Previews¶
Every page carries the tags that X, LinkedIn, WhatsApp, Slack and the others read to draw a preview card:
- Open Graph:
og:type(articlefor an article,websiteotherwise),og:title,og:description,og:url(the canonical address),og:site_name,og:localewithog:locale:alternatefor the other languages, and for an articlearticle:published_time,article:modified_timeandarticle:tag. - The image:
og:imageof 1200×630 pixels, under 1 MB, withog:image:width,og:image:heightandog:image:alt. An article uses the social image of its translation; without one, the build draws one from the cover and the title on the brand template, so no article is shared without a picture. Every other page has its own. - X:
twitter:cardset tosummary_large_image, withtwitter:siteset to the company's account.
3.9.5 Fast on a Phone¶
Pages are static HTML, served from the edge, with only the script a page needs to work. On a mid-range phone over 4G they keep the good thresholds of the Core Web Vitals: Largest Contentful Paint under 2.5 s, Cumulative Layout Shift under 0.1, Interaction to Next Paint under 200 ms. The main image of a page is preloaded; fonts are self-hosted and do not block text.
3.9.6 Checked Before Merge, Watched After¶
- The pull request runs Lighthouse on the built pages, failing below 95 for SEO, performance and accessibility, and a check that every page has its title, description, canonical address, language links, structured data that parses and a valid social image.
- Search Console and Bing Webmaster Tools watch the whole domain
moonitoring.comas one Domain property, which covers every host, with each site's sitemap submitted; new and changed News articles are announced through IndexNow at every build. - Analytics stay cookieless, so no consent banner stands between a reader and the first screen.