@pbn_hosting_sl
oficina@pbnhostingsl.com

Fixing 404 Errors on Inner Pages (Static HTML Websites)

Fixing 404 Errors on Inner Pages (Static HTML Websites)

Fixing 404 Errors on Inner Pages (Static HTML Websites)

Your homepage loads fine, but every “inner page” (anything that isn’t your homepage — your About page, Contact page, blog posts, anything) shows a 404 Not Found error? Frustrating — but the good news is that inner page 404 errors are almost never caused by a hosting problem. They’re caused by how static HTML hosting works: every URL has to point to a real file on the server, in exactly the right place. This guide walks you through why inner page 404 errors happen, how to diagnose them, and how to fix every common cause — in plain English, no jargon.

💡 Heads-up: on PBN LTD you don’t need FTP, SFTP or SSH to fix any of this. Every change in this guide is done through your dashboard’s File Manager:

Click your site → Site Functions dropdown → File manager.

📁 Quick vocab (we use these a lot in this guide):

  • “The root” / “root folder” = the top-level folder of your site in File Manager — the one where your homepage’s index.html sits. Everything else lives inside the root.
  • A folder in File Manager looks like a 📁 icon — you can open it and put files inside it.
  • A file looks like a 📄 icon — it has a name and an extension (e.g. about-us.html) and contains the actual content.
  • index.html = the special filename a web server automatically loads when someone visits a folder. Visit example.com/, the server loads index.html. Visit example.com/about-us/, the server looks for index.html inside the about-us folder.
  • Inner page = anything on your site that isn’t the homepage.

📑 What’s in this guide


🧠 How static HTML routing actually works

On a static HTML site, there’s no clever routing engine like there is in WordPress. Every URL must point to a real file (or a real folder) on the server. If the file isn’t there, exactly where the URL says it should be — you get a 404.

Here’s what the server actually does when someone visits a URL:

  • The URL is https://example.com/about-us.html → the server looks for a file called about-us.html in the root of your site. If it’s there, ✅ it serves it. If not, ❌ 404.
  • The URL is https://example.com/about-us/ → the server looks for a folder called about-us in the root, and inside it for a file called index.html. If both exist, ✅ it serves it. If not, ❌ 404.

That’s it. No magic, no guesswork. If you understand those two rules, you can fix 99% of static HTML 404s.


✅ The two valid ways to structure a static site

You can pick either of these — both work fine on PBN LTD’s static hosting. Just be consistent and make sure your internal links match the structure you chose.

Option A — Flat .html files in the root (simplest)

All pages sit directly in the root folder as .html files. Here’s what that looks like in File Manager (the arrows just show which URL each file responds to — don’t try to copy the arrows, they’re for illustration):

/  (root)
├── index.html        → https://example.com/
├── about-us.html     → https://example.com/about-us.html
├── contact.html      → https://example.com/contact.html
└── services.html     → https://example.com/services.html

Inside your HTML files, the links that go between pages (the “menu” links) would look like <a href="/about-us.html"> — that’s just HTML code for “when this link is clicked, go to /about-us.html“. Easy. No subfolders to manage.

Option B — “Pretty” URLs using folders + index.html

“Pretty URLs” just means URLs without .html on the end — /about-us/ instead of /about-us.html. If you want this cleaner look, give each page its own folder with an index.html file inside:

/  (root)
├── index.html             → https://example.com/
├── about-us/
│   └── index.html         → https://example.com/about-us/
├── contact/
│   └── index.html         → https://example.com/contact/
└── services/
    └── index.html         → https://example.com/services/

The links inside your HTML files would look like <a href="/about-us/"> — note the trailing slash at the end, which tells the browser it’s a folder, not a file. This is the structure most modern site builders (Hugo, Jekyll, Eleventy, and similar tools) produce by default.

💡 The most important rule: don’t mix them. If your site uses Option B but a few internal links still point to /about-us.html (Option A style), those links will 404 — because there’s no about-us.html in the root, only an about-us/ folder with index.html inside.

Not sure which to pick? If you’ve only got a handful of pages and you’re not using a site generator, go with Option A — flat .html files in the root. It’s the simplest setup, the hardest to break, and works perfectly on PBN LTD. You can always switch to Option B later if you want prettier URLs.


⚠️ The most common causes of inner-page 404s

SymptomWhat’s actually wrongWhere to look
Homepage works, /about-us/ 404sNo index.html inside an about-us folder in the rootFile Manager → root → about-us/
Homepage works, /about-us.html 404sThe file about-us.html isn’t in the root — it’s nested in a subfolder like /my-site/about-us.htmlFile Manager → search for the file, move it to root
Some pages work, others don’tMixed structure — some links use .html, others use folder URLsYour HTML source — check the <a href="..."> values
URL works when typed manually but the menu link 404sThe menu link is relative (e.g. about-us) and resolves differently depending on the page you’re onYour HTML source — use absolute paths like /about-us.html or /about-us/
Page works on your computer but 404s onlineCase mismatch — your local OS is case-insensitive, the server is case-sensitiveFile Manager — match exact filename casing
File is in File Manager but URL still 404sYou uploaded into a subfolder (e.g. /public/ or /site/) instead of the rootFile Manager — confirm index.html is at the top level
Recently uploaded files 404CDN cache is serving stale “page not found” responsesSite Functions → Purge CDN cache

🔍 60-second diagnostic checklist

Before you change anything, run through this list. It almost always points straight at the problem:

  1. Open File Manager for the domain (dashboard → site → Site Functions → File manager).
  2. Confirm index.html is in the root (the top-level folder of your site). If it’s nested inside another folder, your whole site is in the wrong place.
  3. Take a 404-ing URL, e.g. https://example.com/about-us/, and look for one of these:
    • A file called about-us.html in the root (only matches the .html URL), or
    • A folder called about-us in the root with an index.html file inside it (matches the /about-us/ URL).
  4. Check the exact casing of the filename. About-us.html and about-us.html are different files on the server.
  5. Look at one of your internal links in the homepage source. Does it use .html or folder-style URLs? Is it consistent with what’s actually on disk?
  6. If you just uploaded files, purge the CDN cache (Site Functions → Purge CDN cache) and test again in an incognito window.

🔧 Step-by-step fixes for inner page 404s

Fix 1 — Your entire site is inside a subfolder

This is the single most common cause. Your index.html works because the homepage just looks for any index.html on the root of the domain — but your other pages can’t be found because they’re nested.

  1. Open File Manager (Site Functions → File manager).
  2. Spot the offending subfolder — usually something like /my-site/, /public/, /dist/, or the name of your zip file.
  3. Open that folder and select all of its contents (the inner index.html, all other pages, folders, images, CSS, etc.) — in PBN LTD’s File Manager you can usually select the first file, then hold Shift and click the last file to select everything in between (or tick the checkbox at the top to select all).
  4. Move everything up to the root. In File Manager, look for a Move or Cut option (right-click, or use the toolbar buttons at the top), then navigate up to the root folder and Paste. The root is the folder above — the one with no index.html in it yet (or one that has only the wrong/empty one).
  5. Delete the now-empty subfolder.
  6. Purge the CDN cache and test in an incognito window.

Fix 2 — Your URLs use folder style but your files don’t

Your menu / links point to /about-us/, but on disk you’ve got an about-us.html file (and no folder). You have two choices:

  • Option 1 — change the links to /about-us.html in your HTML, so they match the file you actually have.
  • Option 2 — change the file structure: create a new folder called about-us in the root, move the existing about-us.html into it, and rename it to index.html.

Fix 3 — Your files use folder style but your URLs don’t

You’ve got folders like about-us/index.html, but links point to /about-us.html. Same logic, reversed: either rename the link, or restructure the files.

Fix 4 — Mixed / inconsistent structure

If some pages are page.html and others are folders with index.html, pick one approach for the whole site and refactor. Mixed structures will keep biting you every time you add a new page.


🔠 Case sensitivity & weird filenames

This catches people out constantly, especially if you’re testing the site on your computer first. Web servers (PBN LTD’s included) are case-sensitive. Windows and macOS file systems usually aren’t.

On your computerOn the serverResult
Link: /About-Us.html
File: About-Us.html
File: About-Us.html✅ Works
Link: /about-us.html
File: About-Us.html
File: About-Us.html❌ 404
Link: /About-Us.html
File: about-us.html
File: about-us.html❌ 404

Safest convention: use all lowercase, hyphens instead of spaces, and stick to a-z, 0-9, - and . in filenames. So about-us.html — not About Us.html, not About_Us.HTML.

Other filename pitfalls:

  • Spaces in filenames become %20 in URLs (e.g. about us.htmlabout%20us.html). Ugly and fragile — use hyphens.
  • Capital extensions: .HTML.html. Always lowercase.
  • Hidden file extensions: on Windows, about-us.html may actually be saved as about-us.html.txt if your OS hides extensions. Turn on “show file extensions” before uploading.
  • Special characters like ?, &, #, accents, or emoji — avoid in filenames.

↪️ What about redirecting old broken URLs to new ones?

If you’ve just restructured your site and external links / Google still point to the old URLs, set up 301 redirects so old URLs forward cleanly to the new ones. These rules live in a special file called .htaccess in your site’s root — don’t worry if you’ve never edited it, the full walkthrough below explains exactly what to do:

For example, to keep old .html URLs working after switching to folder-style:

Redirect 301 /about-us.html /about-us/
Redirect 301 /contact.html /contact/
Redirect 301 /services.html /services/

🚨 When it actually is a hosting problem

It’s rare — but here’s how to tell if your inner page 404s genuinely aren’t your fault:

  • The homepage itself also 404s, not just inner pages. That suggests the site files aren’t being found at all — check your domain’s status in the dashboard and read My Domain Is In ‘ERROR’ State.
  • You’ve moved everything to the root, casing is correct, links match — and it still 404s after a CDN purge in incognito.
  • You’re getting “Too Many Redirects” instead of 404 — that’s a different issue, see Error: “Too Many Redirects”.

If after all of the above your inner pages still 404, open a support ticket with:

  • The exact URL that’s 404ing.
  • The exact path in File Manager where the file lives.
  • A confirmation you’ve already purged the CDN cache.

❓ FAQs

Why does my homepage load but inner pages don’t?

Because the homepage just needs any index.html in the root to load — but every other page needs its own exact file or folder match. So the moment your inner pages don’t sit exactly where the URL expects them, you get a 404 — even if everything else looks fine.

Do I need FTP or SSH to fix this?

No. PBN LTD doesn’t offer FTP, SFTP or SSH — and you don’t need them. The File Manager (Site Functions → File manager) handles everything: moving files, renaming, editing, creating folders, even editing .htaccess.

Should I use .html URLs or folder URLs?

Either is fine — both work on PBN LTD. Folder URLs (/about-us/) look cleaner and are the modern default. .html URLs (/about-us.html) are simpler to manage if you’ve just got a few pages. Pick one, stick with it, and make sure all your internal links match.

Why does /about-us (no trailing slash) sometimes 404 even when /about-us/ works?

Because to the server, /about-us and /about-us/ are different requests. Most setups will auto-redirect the no-slash version to the slash version, but if yours doesn’t, you can either always link with the trailing slash, or add a redirect rule in .htaccess.

I uploaded a new page and it still 404s — why?

Almost certainly cache. The CDN may have cached a “page not found” response from before the file existed. Go to Site Functions → Purge CDN cache, then test in an incognito window.

Will fixing the structure break my SEO?

Only if you change the URLs without setting up 301 redirects. Whenever you change a URL, add a 301 redirect from the old URL to the new one so search engines (and existing links from other sites) follow you across. See the 301 redirect guide.

My site works locally (on my computer) but inner pages 404 on the live site — why?

Two common reasons: (1) casing — your local OS treats About-Us.html and about-us.html as the same file, the server doesn’t. (2) You’re opening files directly (file:// URLs) on your computer, which doesn’t behave like a real web server. Test locally with a small dev server (or just upload and test live with a CDN purge each time).


✅ Quick summary

  • Static HTML serves real files — no routing magic.
  • Either keep all pages as .html files in the root, or use folders with index.html inside.
  • Make sure your internal links match the structure you’ve chosen.
  • Filenames are case-sensitive — use all-lowercase, hyphens, no spaces.
  • If you changed URLs, add 301 redirects so old links don’t die.
  • Always purge CDN cache and test in incognito after changes — most inner page 404s vanish after a cache purge once the structure is right.
Share this article: