An inherited set of URLs

Imperial Seedlings Guide is a static site built with Astro 5 and served from Cloudflare Pages. The domain previously belonged to a hemp seedling store from about 2020 to 2024 and has no connection to the current guide.

The old site left a split set of URLs. 74 archived blog, product and archive pages now 301 to the closest guide. 263 cart, feed, plugin and script addresses answer 410 Gone.

What the two status codes mean

A 301 is a permanent redirect. It tells the browser or other HTTP client that the resource has moved and that future requests should go to the new location. The client may update stored bookmarks and will normally use the new address on the next visit.

A 410 means the resource is gone. Unlike a 404, which can mean the path never existed or the server does not want to say more, a 410 states that the resource was once there and has been removed deliberately. Clients can treat a 410 as final and do not need to retry.

For a static site, this distinction is not just semantic. There is no application code running on each request to examine the URL and choose a response. The hosting platform compares the request path against a set of static files and declared redirect rules.

Declaring redirect rules on a static host

Cloudflare Pages serves the files that Astro builds. When a request arrives for a path that is not an actual page, the host checks its redirect table before falling back to a 404. That table has to be written as part of the deployment configuration.

The first group of old URLs has informational replacements. An archived blog or product page can be pointed to the closest guide. The redirect table includes 74 such pages. For those, a 301 is appropriate because the client should continue to the new resource.

The second group consists of functional addresses: cart, feed, plugin and script paths. Those are not content pages.

Keeping the rules explicit

If a path is missing from the redirect table, the static host will return a 404. That is still a usable response, but it loses the difference between a moved page and a removed endpoint. The split between 301 and 410 makes that difference visible to clients.

It does not require a running server or a database. A static host has no request-time application layer to inspect the URL and decide status codes; it can only compare the request path against static files and predeclared redirect rules. If an old path is missing from that rule set, the host falls back to a default 404, which cannot distinguish a moved page from a removed endpoint. Therefore, the redirect table must be complete at deploy time for the 301 and 410 split to remain meaningful.

The current guide is available at imperialseedlings.com.