Seeing a “403 Forbidden” error on your WordPress site is frustrating. Your site’s still there, but you’re locked out like a guest with the wrong key. And every minute it stays that way can hurt your traffic, sales, and credibility.
But here’s the good news: 403 errors are usually caused by simple misconfigurations, and you can fix most of them yourself without needing a developer or digging through code.
Let’s break it down: what causes a 403 error, and how to fix each cause step by step.
What is a 403 Forbidden error in WordPress?
A 403 Forbidden error means your server understands your request — but refuses to let you in. You’re basically being told:
“This page exists, but you don’t have permission to access it.”
You might see variations like:
- 403 Forbidden
- Access Denied
- You don’t have permission to access this resource
Now, let’s look at why this happens and what you can do about each reason.
Common reasons for a 403 Error (and how to fix each one)
Wrong file or folder permissions
Why it happens:
WordPress needs specific permissions to access files and folders. If they’re too strict (or too open), the server will block access.
How to fix it:
- Log into your hosting File Manager or use an FTP app like FileZilla.
- Set folders to 755 and files to 644.
- Right-click a folder > Permissions > enter
755
- Right-click a file (like
index.php
) > Permissions > enter644
- Right-click a folder > Permissions > enter
- Refresh your site.
This fixes most permission-related 403 errors.
Corrupted .htaccess File
Why it happens:
The .htaccess
file controls things like redirects and access rules. A small error here can trigger a 403.
How to fix it:
- Use your hosting File Manager or FTP to go to the root folder of your site.
- Rename
.htaccess
to.htaccess-backup
. - If you can log into WordPress, go to Settings > Permalinks and click Save Changes to regenerate the file.
- Or, create a new
.htaccess
manually and paste this:
# 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
Plugin conflict
Why it happens:
Some plugins (like Wordfence or iThemes Security) might block certain IPs or pages if they think something suspicious is happening.
How to fix it:
- Access your
/wp-content/plugins/
folder. - Rename the folder of the suspected plugin (e.g.
wordfence
→wordfence-disabled
). - Refresh your site. If it loads, that plugin is the cause.
If you’re not sure which plugin is causing it, rename the whole plugins
folder to plugins-disabled
. That turns off all plugins temporarily. You can then activate them one by one in the admin panel.
Hotlink protection or host security rules
Why it happens:
Some hosting accounts have security settings (like hotlink protection or firewall rules) that block access to images, files, or even entire directories.
How to fix it:
- Log into your hosting dashboard (like cPanel).
- Go to Hotlink Protection under Security.
- Turn it off temporarily, or make sure your own domain is whitelisted.
Still having issues? Ask your host if there are firewall/mod_security rules blocking access to certain folders or URLs.
Theme functions or redirect Conflicts
Why it happens:
Sometimes a theme’s functions.php
file or redirect setup causes permission issues.
How to fix it:
- Temporarily switch to a default theme like Twenty Twenty-Four:
- If you can’t access the dashboard, go to
/wp-content/themes/
and rename your active theme’s folder. - WordPress will fall back to a default theme.
- If you can’t access the dashboard, go to
- If your site works, your theme has the issue.
Browser or cookie issues
Why it happens:
This one’s less common, but worth checking: corrupt cookies or cached redirects can cause false 403 errors.
How to fix it:
- Open your site in Incognito Mode.
- Or, clear your browser’s cookies and cache.
- Try using another browser or device to confirm.
You recently migrated or updated your site
Why it happens:
If you’ve moved your site to a new host, updated WordPress, or changed your domain, permission or path mismatches may cause a 403.
How to fix it:
- Double-check the
.htaccess
file and file permissions. - Clear browser cache and update your site URL settings in Settings > General.
- Use a plugin like Better Search Replace to fix any old URLs in your database if needed.
FAQ about WordPress 403 Errors
Q: Can plugins really block access to my site?
Yes — especially security, redirect, or firewall plugins. They might block certain IPs or URL patterns.
Q: What if I can’t access WordPress at all?
Use your hosting file manager or FTP to disable plugins or fix the .htaccess
file. These don’t require logging into WordPress.
Q: Is this the same as a 404 error?
Nope. A 404 means “not found” — the page doesn’t exist. A 403 means “forbidden” — the page exists, but access is denied.
Q: How long does it take to fix?
Most 403 errors can be solved in 15–30 minutes once you know the cause.
Final thoughts
403 errors are annoying, but they’re not the end of the world. In fact, they’re usually caused by small settings or plugin issues — nothing a few minutes in your file manager can’t fix.
Just take it one step at a time:
- Reset your
.htaccess
- Check file permissions
- Disable plugins or security rules
- Clear browser issues
And if you’re still stuck? Then consult with a WordPress expert to solve your issue.