
How to Fix WordPress Permalinks Not Working (Broken Links)
Table of Contents
- Introduction
- What Triggers WordPress Permalinks Issues?
- How to Fix WordPress Permalinks Not Working
- Conclusion
Introduction
Permalinks control how WordPress turns clean URLs into content. They connect pretty paths to posts, pages, and taxonomies. When routing fails, links break and pages show 404 errors. Search engines then drop pages from the index. Users also lose trust and leave faster. If you see wordpress permalinks broken, treat it as a top priority. You must check server rules and WordPress rewrite data. Fix the root cause, then verify across key URL types.
What Triggers WordPress Permalinks Issues?
A 404 Not Found error usually signals a routing problem. Permalinks are not reaching WordPress to build the query. The web server may block requests before index.php loads. Several common events can start these permalink failures. Understanding each trigger helps you choose the right fix.
1.1 Installing New Plugins
Plugins can add routes, redirects, and rewrite rules during activation. A single bad rule can block access to index.php. Conflicts with themes or other plugins are also common. Some plugins edit the .htaccess file without warnings. Install plugins from trusted sources, preferably the official repository. Test immediately after activation and re-save permalinks. If errors start, disable the last installed plugin. Re-enable plugins one by one to isolate the conflict.
1.2 Updates
Core, theme, or plugin updates can change routing behavior. Rewrite arrays may become stale after multiple update steps. Stale arrays no longer match server rewrite directives correctly. This mismatch causes 404 errors on posts and archives. Re-save permalinks after every significant update or deployment. Clear page caches and purge CDN edges before retesting. Check logs for new 404 spikes tied to update times. Roll back the last change if issues persist.
1.3 Migrating WordPress to a New Domain or Server
Migrations change domains, document roots, and PHP handler settings. Old home or siteurl values create loops and 404s. Server blocks may still reference the previous site directory. Enabling SSL can introduce extra redirects or mixed content issues. Update environment values and web server mappings carefully. Run a safe search-replace for all old origins. Rebuild rewrites and test direct origin URLs without the CDN. Verify status codes on posts, pages, and archives.
1.4 Changes in the .htaccess File
.htaccess controls Apache rewrites, redirects, and permalink handling. Removing the WordPress block breaks pretty links immediately. Rules placed above that block can capture requests early. Security tools may lock or rewrite this file silently. Ownership or permissions can block runtime updates completely. Restore the canonical WordPress block exactly as documented. Ensure AllowOverride All and mod_rewrite are enabled. Re-save permalinks and confirm 200 responses across key routes.
1.5 Restoring WordPress Backup
Backups can restore outdated rules and staging environment values. Old rewrite arrays will not match the live server setup. Staging domains inside the database trigger redirects and loops. Different PHP handlers change expected execution flow after restore. Align environment values with the current host and domain. Replace .htaccess with a clean, known-good baseline file. Re-save permalinks, then clear plugin and CDN caches. Test again at the origin to confirm accurate responses.
How to Fix WordPress Permalinks Not Working
You now know what breaks permalinks, so let’s fix them. Work step by step and retest after each change. Keep an incognito tab open for clean tests. Always keep a current backup ready.
2.1 Resetting the Permalink Settings
Open your WordPress dashboard and navigate to Settings → Permalinks. Note your current structure for a quick rollback later. Choose a different structure and click Save Changes once. Switch back to your preferred structure and save again. This flushes rewrite arrays and rebuilds routing internally. Test a previously broken URL in an incognito window. If pages load, the issue was stale cache or rules. If errors persist, continue to the next method.
2.2 Replacing the .htaccess File (Apache)
Connect using your hosting file manager, SFTP, or FTP client. Go to the site’s document root, usually the public_html directory. Locate the .htaccess file and download a safe backup copy. Rename the existing file to .htaccess-backup to disable it. Create a new .htaccess file in the same directory. Paste the default WordPress rewrite block and save the file. Set file permissions to 644 and confirm correct ownership. Return to WordPress and re-save permalinks again. Clear plugin caches and any host cache layers. Test several URLs, including posts, pages, and taxonomy archives. If problems remain, verify mod_rewrite is enabled in Apache. Ensure AllowOverride All is set for your site directory.
Default WordPress .htaccess rules:
# 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
2.3 Disabling Plugins to Find Conflicts
Open Plugins → Installed Plugins inside your WordPress dashboard. Select all plugins and choose Deactivate from bulk actions. Apply the action and test a failing URL immediately. If links work now, a plugin caused the conflict. Reactivate plugins one at a time and retest the URL. The error will return when the culprit is active. Open that plugin’s settings and review redirect features. Disable options that modify .htaccess or add rewrites. Retest after each change to confirm stable routing behavior. If issues persist, leave the plugin deactivated temporarily. Contact the plugin vendor with clear reproduction steps. Consider replacing the plugin with a supported alternative.
Conclusion
Broken permalinks are a routing failure between server rewrites and WordPress rules. Treat them as urgent because they damage SEO, traffic, and trust. Start safely: take a backup, re-save permalinks, and test. If problems persist, restore a clean .htaccess, confirm mod_rewrite, and fix Site Address values, permissions, and caches. Isolate plugin conflicts methodically. After migrations, update domains, flush rewrites, and retest at the origin. Work step by step, check logs, and document the final configuration to prevent repeat incidents thoroughly.