Error 404 · configuration
404 Not Found
The server is working and answered you — it just has nothing at the address you asked for.
Also seen as: Page not found · The requested URL was not found on this server
What it actually means
A 404 means the server received your request, understood it, and found no file or route matching that URL.
This is a healthy response. The server is up, DNS resolved, and your connection worked. Compare that with 403 Forbidden, which means the thing exists but you may not have it, and 500, which means the server broke while trying.
On a brand new hosting account, a 404 usually means the file is not where you think it is. On an established site, it usually means a rewrite rule stopped working.
Why it happens
The file is in the wrong directory
Files must be inside the web root — htdocs, public_html or www depending on the host. Uploading a folder rather than its contents is the classic version: htdocs/mysite/index.html serves at /mysite/, not at /.
The filename case does not match
Linux servers are case sensitive. About.html and about.html are different files. This bites hardest when moving a site from Windows or macOS, where it worked locally because those filesystems are usually case-insensitive.
Pretty URLs lost their rewrite rules
WordPress and most frameworks serve every page through one front controller, using .htaccess rules to route the request. If that file is missing, empty, or the server is ignoring it, the homepage works and every other page returns 404.
That specific symptom — homepage fine, everything else 404 — is almost always this.
The page genuinely moved
A restructure, a changed slug, or a deleted post. The URL is still linked from elsewhere, so people and search engines keep asking for it.
How to fix it
1. Check the file is really there, and really named that
Open the file manager or connect over FTP and look at the actual path. Compare it character by character with the URL, including capitals.
Your homepage must be index.html or index.php, in lower case.
2. Regenerate the rewrite rules
If the homepage works but nothing else does, this is your fix.
On WordPress: go to Settings → Permalinks and click Save Changes without altering anything. That rewrites .htaccess with the correct rules.
If that does not work, check the file exists and contains the standard block:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
One caveat worth knowing: nginx ignores .htaccess entirely. If your host runs plain nginx, these rules do nothing and the routing must be configured server-side.
3. Redirect old URLs rather than deleting them
If a page moved, send visitors and search engines to the new one with a permanent redirect:
RewriteEngine On
RewriteRule ^old-page/?$ /new-page/ [L,R=301]
The .htaccess generator will build these for a list of moved URLs.
Redirect to the closest equivalent page, not blanket to the homepage — a homepage redirect is treated as a soft 404 and helps nobody.
4. Serve a useful 404 page
You cannot prevent every 404, so make the ones you get helpful:
ErrorDocument 404 /404.html
A good 404 page says what happened, offers search, and links to the main sections. Do not redirect 404s to the homepage — it hides the problem from you and confuses visitors.
On CWP specifically
On CWP your web root is htdocs. A newly created account with no files serves a 403 rather than a 404, because the directory exists but is empty — upload an index.html and it resolves.
We run LiteSpeed, which reads .htaccess natively, so standard WordPress and framework rewrite rules work without modification.
Related errors
-
403
403 Forbidden
The server found what you asked for and refused to serve it — a permissions, index, or access-rule problem rather than a missing file. -
500
500 Internal Server Error
Something in your application or server configuration crashed, and the server is deliberately withholding the detail from visitors — the real message is in your error log. -
REDIR
ERR_TOO_MANY_REDIRECTS
Two rules are sending the browser back and forth at each other, so it gives up after about twenty hops rather than looping forever.
Post the exact error and your account name on the community forum — staff and other users answer there, and the thread helps the next person who hits this.