Hashton

engineering

← Back to blog

If it has no URL, search cannot find it

Case-study modals, mixed www/apex canonicals, and missing llms.txt keep small-business sites invisible. The fix is boring: real URLs.

·Harry Ashton·engineering

A lot of small-business sites are PDFs wearing a domain. Pretty, slow, and invisible. Search engines and answer engines do not “look at” your hero animation. They fetch URLs. If the thing you are proud of has no address, it does not exist in that index.

A traditional UK shopfront with vintage wares in the window
A high-street frontage still needs a URL behind the glass. Photo: Valerija Timofejeva / Pexels

Modals are not pages

I have built case-study grids that opened in a dialog. They felt slick in a demo. Google got a single /proof URL and a pile of buttons. The individual stories — the ones you would actually want cited — 404’d. That is not a content problem. It is an architecture problem.

The fix is boring on purpose: one slug per piece of work, a real <a href> from the index, a unique title and description, and the important outbound links as crawlable anchors. The live pattern is on Hashton proof: EO Charging, Thrive Learning, CodePrepped, and the rest each have a path. If any of those still 404, that is a bug in the route, not an excuse to go back to modals.

What crawlers and chat-search actually use

  • Sitemap <loc> values that match the host users land on. Ours are https://www.hashton.agency/….
  • Canonical tags that do not fight your redirect. If apex 308s to www, every canonical should be www. Fighting that with apex metadata is how you get duplicate-host noise for months.
  • llms.txt as a plain-text map for AI systems. Hashton’s is public at /llms.txt — services, proof URLs, location, blog.
  • Schema that is true. Region is fine. An invented street or telephone is not. Missing NAP is better than fake NAP; citation sites will copy the lie forever.
  • Internal links a parser can see. Footer and proof pages should name related products with hrefs. A role="button" is a gesture, not a citation.
Black and white aerial view of Nottingham’s canal and rooftops
Nottingham from above. Photo: Altaf Shah / Pexels

Production means you can change it on a Tuesday

A brochure only the original freelancer can edit is a liability. I put marketing pages in the app and long articles in Postgres so a draft can sit unpublished, get a proper slug, and go live without a redesign. That is how this post ships: status draft until it should be public; no sitemap entry until published_at is set.

The same rule applies to services copy. If you add “AI automation” as a sentence on the homepage but never give it a URL, you are asking a crawler to infer a product you did not bother to name. Give it a page, a title, and a link from the thing people already rank for.

A short test before you pay anyone

Open your site in a private window. Disable JavaScript if you can. Can you still reach the service you sell, the work you are proud of, and a way to contact you? View source, search for rel="canonical", and check it matches the address bar after redirects. Fetch /sitemap.xml and click three URLs. If any of those fail, you do not have a website. You have a demo.

If you want that test run on your current URL, email me or book a slot. I will send back the list of URLs that 404, the host mismatches, and the pages that should exist and do not — without a pitch deck.

Tags

seocrawlabilitynextjstechnical-seo

Need production software built?

Work directly with Harry Ashton — clear scope, fast delivery, engineer-led collaboration.