WordPress errors

How to fix a WordPress 403 forbidden error

A WordPress 403 forbidden error means a request was refused. The refusal can come from WordPress, your hosting server or a firewall in front of the site. Identify which layer blocked the request before changing permissions or switching off protection.

Time: 20-45 minutes for investigation Level: Guided troubleshooting
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

What a WordPress 403 error means

Being told access is forbidden does not mean you should open file permissions to everyone. A request can be refused by WordPress, the web server or a security service in front of it. This guide helps you record exactly what is blocked, identify the layer responsible and test a targeted correction while preserving the protection your site still needs.

Chrome Developer Tools Headers tab showing the selected request URL and Status Code
Right-click the blocked page in Chrome, choose Inspect, select Network and reload. Click the request matching the page address, open Headers and record its URL and Status Code. The unchanged Google example shows 200, not 403. Your own 403 result confirms refusal but does not identify the security or server rule behind it. Credit: Chrome for Developers / Google, CC BY 4.0.

Choose the next check from the evidence

If the refusal happens during a purchase, follow the WooCommerce Cloudflare checkout 403 guide to connect the failed request to the security event and order.

Check whether the refused page should be accessible

Copy the full page address and error text, plus the time and any request or Ray ID shown. Compare the homepage, the affected public page and your normal dashboard address. A denied directory listing or private configuration file is not a fault to fix. Work only on pages and actions you are authorised to access.

For a dashboard action, confirm that you are signed in with the intended account. Open a fresh login tab and try the action again after saving any unsaved text separately. Ask an existing administrator to verify your role using the user-role guide. Do not grant administrator access simply to make an error disappear.

If the problem occurs only on one network, record whether a mobile-data connection can load the same public page. This comparison helps support find an address-based block; it does not prove the original block was incorrect.

Trace a firewall refusal

A firewall checks incoming requests against security rules. Cloudflare and hosting firewalls operate outside WordPress, so deactivating a WordPress plugin cannot turn those rules off. Use the error's branding and request ID as clues, then confirm the source in the relevant security log.

If you manage Cloudflare, open the site's security events and filter by the recorded time, address and Ray ID. For a hosting firewall, send the same details to support and ask which rule blocked the request. In a WordPress security plugin, use its documented blocked-request or activity screen if the dashboard remains available.

For a confirmed false positive, ask the provider to adjust the specific rule for the required action. Retest once and confirm protection remains enabled. Avoid a sitewide bypass or an exception covering every request to wp-admin or admin-ajax.php. Those addresses handle sensitive operations too.

Investigate file access after a migration or permission change

If the hosting error log says permission denied for a file or directory, take a backup and ask the host to confirm its expected owner and permissions. The file owner and its permission settings both affect access; changing numbers alone does not correct ownership.

Use our file-permission guide for a recorded, targeted correction through File Manager. Do not apply 777 or make the whole installation writable. When the log points to a directory without an index file, ask the host to verify that the domain points at the intended WordPress directory and that its files were copied completely.

An access rule in .htaccess can also refuse a request on servers that use that file. Have the host identify the matching rule and restore its known working version if a recent edit caused the problem. Deleting the entire file can remove unrelated restrictions and redirects.

Test a suspected plugin without exposing the site

Use a staging copy when the error began after a plugin change and the host has ruled out its own firewall. Follow the plugin conflict procedure, keeping the plugin responsible for the tested feature active.

If a security plugin has locked you out, use its official recovery procedure or ask its support team to remove the confirmed lockout. A developer can use targeted file-based deactivation if necessary, with a plan to restore protection immediately. Do not leave the security plugin disabled as the permanent fix.

Confirm access and protection together

Repeat the original action from the affected account and network. Check the public page while logged out and confirm private pages still require the intended login. Inspect any recorded event for the retry, but judge success by the completed action and retained protections. An allowed request does not necessarily appear in a security-event list; an absent entry alone proves nothing.

Remove temporary exceptions that did not resolve the issue and record the final rule or permission correction. If access still fails, send support the new request time and ID so they can trace the remaining block rather than widening access further.

Cloudflare's Security Events instructions explain where to find the events and apply filters in its current dashboard.

Reference material

Cloudflare documents 403 responses. WordPress explains file ownership and permissions. Follow your provider's current controls for the specific rule it identifies.

Get help with the next step

If a firewall keeps blocking editing or checkout, ask BugShield for help with the 403 error. Share the failed action and request ID so we can assess how to restore legitimate access while retaining protection.

Questions answered

How to fix a WordPress 403 forbidden error FAQs

Does a 403 error prove my site was hacked?

No. It reports refused access. A legitimate restriction, account-role issue, firewall rule or file-access problem can produce that result. Investigate the matching log rather than assuming a compromise.

Should I give every file 777 permissions?

No. That makes files writable far more broadly and does not fix incorrect ownership. Ask your host for the expected settings and correct only the confirmed problem.

Why am I blocked while other visitors can browse?

The refusal can depend on your account, network address or the particular action. Compare those conditions and provide the request time and ID to the service that recorded the block.

Can I fix Cloudflare blocks by disabling a WordPress plugin?

Cloudflare rules run outside WordPress. Find the matching Cloudflare security event and correct the responsible rule. A plugin change does not remove an independent Cloudflare block.

Is a 403 for wp-config.php a problem?

No public access is needed to that sensitive configuration file. A refusal there is expected protection. Troubleshoot the public page or authorised dashboard action that actually needs to work.

Need a hand with your WordPress site?

Tell us what happened and where you got stuck. A BugShield developer can help you work out the next step and confirm a price for the fix.

Explore help with this issue

Accessibility settings

Adjust how this site looks and moves. Your choices are saved in this browser.