How to Fix WordPress Permalinks Not Working – Full Troubleshooting Guide
What Are WordPress Permalinks and Why Do They Matter?
Permalinks (short for permanent links) are URLs to your WordPress content: posts, pages, categories, tags, and archives. For example:
https://yourdomain.com/sample-post
Code language: JavaScript (javascript)
Permalinks affect:
- SEO: Clean URLs improve search engine visibility.
- User Experience: Clear URLs are easier to read, share, and trust.
- Site Structure: They help organize your website content logically.
WordPress lets you choose your permalink format under Settings > Permalinks, including options like Post name, Day and name, or a Custom structure.

Signs That Your WordPress Permalinks Are Not Working
If you experience any of the following, your permalinks might be broken:
- Posts or pages show 404 Not Found errors.
- Category or tag pages don’t load correctly.
- Custom post types or product URLs return errors.
- Pretty permalinks (e.g., /sample-post/) don’t work, but plain ones (e.g., ?p=123) do.
- Pagination, author archives, or search results fail to load properly.
Common Reasons Why WordPress Permalinks Break
Broken permalinks can be caused by:
- Corrupted .htaccess file (for Apache servers)
- Apache mod_rewrite module disabled
- Missing rewrite rules in Nginx
- Plugin conflicts (e.g., SEO, redirect, cache plugins)
- Theme conflicts (especially with custom post types)
- Incorrect file/folder permissions
- Caching or CDN conflicts
Step-by-Step Guide to Fix WordPress Permalinks Not Working
Flush Rewrite Rules by Resaving Permalink Settings
Go to Settings > Permalinks and click Save Changes without modifying anything. This flushes WordPress rewrite rules.
Replace or Repair the .htaccess File (Apache Servers)
If you’re on Apache, replace .htaccess in your root directory with:
# 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
Code language: HTML, XML (xml)
Enable mod_rewrite Module in Apache
Use phpinfo or contact your host to check if mod_rewrite is active. WordPress requires it for pretty permalinks.
Add Nginx Rewrite Rules
If you’re using Nginx, make sure your server block includes:
location / {
try_files $uri $uri/ /index.php?$args;
}
Code language: PHP (php)
Deactivate Plugins That Might Conflict with Rewrite Rules
Temporarily deactivate all plugins. If permalinks start working, reactivate plugins one by one to find the conflict.
Switch to a Default WordPress Theme
Themes can override or break rewrite rules. Activate a default theme like Twenty Twenty-Four and test permalinks.
Temporarily Switch Permalink Structure
Go to Settings > Permalinks > switch to Plain, save, then back to your desired structure. This forces rewrite rule regeneration.
Check and Correct File Permissions
Ensure .htaccess has 644 permission and folders like wp-content have 755. Incorrect permissions prevent file changes.
Clear Cache and CDN
Purge caches from:
WordPress plugins (e.g., WP Rocket, LiteSpeed)
Hosting provider panel (e.g., SiteGround, Kinsta)
CDN services (e.g., Cloudflare)
Preventing Permalink Issues in the Future
- Avoid manually editing .htaccess unless necessary.
- Use staging environments to test plugins/themes.
- Keep themes, plugins, and WordPress core updated.
- Avoid using multiple redirect or caching plugins simultaneously.
- Regularly back up your site.
When to Contact Hosting Support
Contact your host if:
- mod_rewrite is not enabled.
- You’re unsure how to edit Nginx or .htaccess files.
- File permissions can’t be changed via your control panel.
- Server logs show persistent rewrite errors.
Conclusion: WordPress Permalinks Can Be Fixed with the Right Process
Permalink issues are common but fixable. Start with resaving permalink settings, check .htaccess or Nginx config, look for plugin/theme conflicts, and clear caches. Follow a structured approach, and your site’s URLs will be back to normal.