When the home page loads and About, Contact, Services and every blog post give a 404, your pages are almost never gone. WordPress turns a pretty address like /contact/ into "show page 14" using a short set of address rules (your permalinks). The home page needs no rule, so it is the only thing left working when those rules go missing. It typically happens right after a move to a new host, a restore, an SSL or security plugin change, or a server update. Below is a rebuilt example (not a real client), then the safe order of steps.
This one look tells you which half is broken, before you touch anything.
.htaccess) is missing or broken, or the server is set to ignore it. This is the usual one after a host move.yoursite.com/?page_id=2 (or any page's ID, shown in the address bar when you edit it). If that address shows the page while /about/ does not, the page is fine and only the address rules are missing..htaccess if it exists: it can hold your https redirect, caching and security rules too..htaccess. Test an inner page in a private window. This alone fixes most cases..htaccess, or the file is still missing (it starts with a dot, so file managers and migration tools often hide or skip it): in the host's file manager, turn on "show hidden files", open or create .htaccess next to wp-config.php, and make sure it contains WordPress's standard block, unchanged:
# 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
If WordPress lives in a subfolder (for example /shop/), both the RewriteBase and the last line use that folder: RewriteBase /shop/ and RewriteRule . /shop/index.php [L]. Keep any other rules already in the file, above or below this block.mod_rewrite) is off or the site's settings do not allow .htaccess (AllowOverride). On nginx, which never reads .htaccess, the site's server block needs try_files $uri $uri/ /index.php?$args;. On shared hosting you cannot change either yourself: send the host's support exactly that sentence and they fix it in minutes./shop/ fight over it).| What you find | What it means | Usual fix |
|---|---|---|
| Theme's own "not found" page on every inner page | WordPress's stored address rules were lost (often after a restore or a plugin change) | Settings, Permalinks, Save Changes |
| Plain server "Not Found" right after a host move | .htaccess was not copied (hidden dotfile) | Save permalinks, or recreate the file with the standard block |
.htaccess is there but a security or SSL plugin rewrote it | The WordPress block was overwritten or cut off | Put the standard block back; keep the plugin's own lines |
| File is right, plain 404 continues | Server ignores .htaccess, or it runs nginx | Host turns on mod_rewrite / AllowOverride, or adds try_files |
| Site moved into or out of a subfolder | RewriteBase and the last rule point at the old folder | Match both to the new folder, then save permalinks |
| Only products, events or one section fail | That plugin's rules never got stored, or a page took its address | Re-activate the plugin, rename the clashing page, save permalinks |
?p=123, and all of those links break instead..htaccess and start over without a copy. On many sites it also holds the https redirect, the www rule, caching and blocked bots; losing those causes the next problem./contact-2/ while the originals sit unreachable.If you can reach the dashboard or the host's file manager, the steps above are usually enough. If the site has been showing "Not Found" to customers since a move and you need it right today, that is what the box below is for. Related: your home page says "Page not found" is the opposite case, and "redirected you too many times" is the other address problem a host move often brings.