October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

Fix “You Don’t Have Permission to Access” on Multiple WordPress Sites

A multi-site WordPress 403 usually starts at the web-server or hosting layer. Follow this scope-based guide to identify shared permission failures, .htaccess and rewrite problems, Multisite routing errors, intentional security blocks, and visitor-specific WAF rules.
Length10 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If several WordPress domains suddenly show “You do not have permission to access this resource” or 403 Forbidden, the fault is usually above WordPress: a shared virtual-host permission, document-root access rule, web-server configuration, or provider-wide security policy. Start with the Apache or Nginx error log at the time of failure, then determine whether every path, one site, only rewritten URLs, or only sensitive filenames is blocked. Do not begin by reinstalling WordPress or recursively changing permissions to 777.

What the 403 message means

HTTP status 403 means the web server understood the request but refused to authorize it. Apache’s documented example uses the wording “You do not have permission to access this resource.” A request can be rejected before PHP starts, so a healthy WordPress dashboard, plugin list, or database does not rule out a server-side failure.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a single site, common causes include an unreadable document root, a local .htaccess rule, a virtual-host <Directory> policy, a rewrite mismatch, or a firewall rule. When multiple domains fail at the same moment, prioritize anything they share: the parent directory, vhost templates, service-account access, a reverse proxy, or a host-wide policy.

Use the failure pattern to choose the right branch

What fails Most likely area First check
Every domain and every path Shared vhost or httpdocs permissions, parent-directory search permission, Apache/Nginx service-user access, or a provider policy Web-server error log and the permissions on shared parent and document-root directories
One domain, including its home page That domain’s vhost, document root, ownership, or local .htaccess Compare its vhost and file ownership with a working domain
Only pretty URLs fail; a static file and the home page work Rewrite or .htaccess handling Confirm Apache is allowed to read .htaccess and that the required override classes are enabled
Only names such as wp-config.php or readme.html fail Intentional hosting security rule Inspect the requested path and generated vhost rules before changing protection
Only one visitor, office, or network fails CDN, WAF, IP reputation, or access-control policy Compare provider security logs for the affected IP with an unaffected connection

The table is a decision aid, not a reason to change several layers at once. Make one controlled change, retest, and record the result.

Step 1: Reproduce the error without changing files

Test at least two domains if more than one is affected. Use an incognito window or a second network only to confirm the scope; do not treat a browser refresh as a diagnostic.

  1. Request the home page. Record the exact status and timestamp for each domain.
  2. Request a harmless static file. Use an existing public image, CSS file, or other non-sensitive asset. This separates document-root access from WordPress routing.
  3. Request /wp-admin/. A failure here can be caused by the same server rule as the front end, but a working front end with a blocked dashboard points toward an admin-specific rule.
  4. Try a known pretty URL. If the home page works but a post or page URL returns 403, focus on rewrites and override policy.
  5. Write down what changed. Note a migration, domain addition, SSL or proxy change, permission update, plugin activation, or hosting-policy change immediately before the incident.

Do not use a sensitive filename as your first test. A deliberate deny rule for wp-config.php can be evidence that protection is working, not that the installation is broken.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step 2: Read the web-server log at the failure time

The error log is more useful than the browser’s generic 403 page. In a hosting panel, open the domain’s Apache or Nginx error-log viewer and filter to the recorded timestamp. On a managed server, ask the provider for the matching vhost entry rather than only a screenshot of the browser.

Look for a message that identifies the layer refusing access. Plesk’s all-domain example includes pcfg_openfile: unable to check htaccess file and explains that Apache cannot properly access the vhost or httpdocs folder. A message about a denied directive points toward .htaccess or vhost policy; a WAF event points toward security filtering; a missing file with no authorization error points toward document-root mapping instead.

  • Record the exact path. A denial for /wp-admin/ is materially different from a denial for /wp-content/uploads/ or a configuration filename.
  • Record which server logged it. Nginx may be the public proxy while Apache serves PHP. Check both logs when the stack uses both.
  • Preserve the original entry. Copy the timestamp, domain, path, and error text before restarting services or editing configuration.

A 403 that appears before WordPress PHP executes cannot be fixed by clearing WordPress caches alone. The log tells you where to work first.

Step 3: If every domain fails, inspect shared access

When unrelated domains fail simultaneously, compare the common filesystem and server layers before opening each site’s WordPress settings. The web service must be able to traverse every parent directory and read the files it is expected to serve. A directory can look readable while a parent directory lacks execute/search permission, producing an authorization failure for all descendants.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check the shared directory chain

  • Identify the parent directory that contains the affected vhosts or document roots.
  • Verify that the Apache or Nginx service account can search (execute) each parent directory and read the document-root contents.
  • Compare ownership and group membership with a working vhost on the same server.
  • Check whether a recent migration, restore, or control-panel operation changed the owner or group of the parent, vhost, or httpdocs directory.

Correct the service-user access using the hosting platform’s documented ownership and permission mechanism. On managed hosting, this generally means asking support to repair the vhost or subscription permissions rather than manually changing system-owned directories. After the correction, reload or restart the web service through the provider’s supported control, then retest two domains and a static file.

Check shared configuration

Review the vhost template, included access-control files, reverse-proxy mapping, and any server-wide policy deployed at the time the domains broke. A single invalid or overly restrictive include can affect every vhost. Restore the last known-good configuration if you have a verified backup, and keep a copy of the failing version for the provider or administrator.

Step 4: If one domain fails, compare it with a working site

Use a working domain on the same server as your control. Compare the failing domain’s document-root path, vhost <Directory> block, owner and group, local .htaccess, and security rules. A domain can be pointed at the wrong directory after adding an alias or moving a site; fixing WordPress URLs will not repair a vhost that denies the mapped directory.

Check the document root and ownership

Confirm that the vhost’s configured root is the directory containing the intended index.php and WordPress files. Check every parent directory’s search permission, then check that the service account can read the files and traverse directories. Do not change ownership blindly: the account that manages the installation and the account that serves requests may be related by group, by a hosting isolation model, or by a provider-specific mechanism.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check the local .htaccess

Make a dated backup before editing. Compare the failing file with the standard WordPress rules used by a working site on the same hosting stack. Look for an explicit Deny, an IP restriction, a malformed directive, or rules copied from another server. If the error log says Apache cannot check the file, fix readability and parent-directory access first; replacing the contents will not help while Apache cannot open it.

Step 5: Understand when .htaccess can matter

.htaccess is not automatically authoritative. Apache’s AllowOverride setting determines whether per-directory configuration is read, and which override classes determine which directives are permitted. With AllowOverride None, Apache ignores .htaccess files. Conversely, enabling only limited override classes can make a copied WordPress rule fail or be rejected.

Ask the administrator to verify the vhost’s <Directory> policy for the actual document root, including whether the file is allowed to contain the rewrite and access directives it uses. Do not enable unrestricted overrides simply to make a symptom disappear; the narrower policy that supports the required rules is safer.

Typical rewrite-only symptom

If the home page and a static asset work but post URLs return 403, confirm that the rewrite module and WordPress rewrite rules are enabled for that vhost. For a Multisite installation, also verify that the network’s path or domain mapping matches the vhost. A rewrite problem can produce a 404 or 403 depending on the server’s access policy, so the log remains decisive.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step 6: Verify WordPress Multisite routing

WordPress Multisite lets several sites run from one installation. Its network can be subdirectory-based (for example, one installation with site paths) or domain/subdomain-based. The routing model must agree with the vhost and rewrite configuration for every domain.

  1. In the Network settings, identify whether the network uses subdirectories or domains/subdomains.
  2. Confirm that each domain resolves to the intended network’s document root, not to a different subscription or an empty directory.
  3. Check the network’s generated rewrite rules and the vhost’s corresponding Directory and override policy.
  4. Test the network’s main site, a secondary site, a static file, and /wp-admin/ separately.

If all network sites fail, treat the shared vhost and parent-directory checks as higher priority than individual site settings. If only one mapped domain fails, compare that domain’s mapping and vhost with another network domain.

Step 7: Apply permissions conservatively

WordPress notes that correct modes depend on the host and installation model. As general examples, suexec-style setups commonly use directories at 755 or 750 and files at 644 or 640; a sensitive wp-config.php may be tightened to 440 or 400. These are examples, not a universal prescription. The service must still be able to read what it serves, while the managing account retains the access needed for updates.

  • Set ownership and group according to the host’s documented service-user model.
  • Give directories only the search and read/write access required by the application.
  • Keep ordinary files non-world-writable; tighten configuration files where the hosting model supports it.
  • Back up shared configuration and the affected site before changing modes or ownership.

Never recursively change an entire installation to 777. WordPress explicitly warns that world-writable files let other users or compromised processes modify site code, and states that no directories should ever be given 777, including upload directories. If a repair requires a broad ownership change, have the host perform it with a rollback plan.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Step 8: Distinguish intentional security blocks

Hosting control panels may generate Apache and Nginx rules that return 403 for sensitive names such as readme.html, license.html, changelog.html, and wp-config.php. Plesk WP Toolkit documents this behavior as a security measure. If the denied path is one of these names while the public site and dashboard work, the block may be expected.

Check the requested path and the generated vhost configuration before disabling anything. Removing a protective rule reduces security and should be justified by a specific requirement, not by the presence of a 403 alone. If a legitimate integration needs a file exposed, use a safer alternative such as a non-sensitive endpoint or provider-supported exception.

Step 9: Investigate a visitor-specific failure

If the site works from one connection but not another, compare the source IP, request headers, and time of the block in CDN, WAF, firewall, and hosting logs. Possible causes include an IP reputation rule, country or network policy, rate limit, authentication gate, or a misconfigured allowlist. Because these policies are provider-specific, the relevant evidence is the provider’s event log; there is no universal WordPress setting that fixes every visitor-specific 403.

Ask the provider to identify the rule ID and expiry, if any. Avoid disabling the entire WAF to test a single request. A narrowly scoped allowlist or corrected application rule is safer than removing all filtering.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recovery checklist

  • Capture the exact URL, status, timestamp, domain, and network used for the test.
  • Test a home page, harmless static file, /wp-admin/, and a pretty URL on at least two domains.
  • Read the Apache and, where applicable, Nginx error logs at that timestamp.
  • For an all-domain outage, inspect shared parent directories, vhosts, service-user access, and provider-wide policies first.
  • For a single-domain outage, compare its document root, owner/group, vhost, and .htaccess with a working site.
  • Verify Apache AllowOverride and <Directory> policy before changing rewrite rules.
  • Confirm Multisite path or domain mapping and network rewrites.
  • Check whether a sensitive filename is intentionally denied.
  • Use least-privilege modes and never apply recursive 777 permissions.
  • Retest after one controlled change, then reload the web service through the supported hosting method.

When to involve the host or server administrator

Contact the provider when you cannot inspect vhost logs, the affected directories are owned by a system account, several subscriptions fail together, or the fix requires changing a shared Apache/Nginx template. Provide the domains, exact paths, timestamps, network used, and copied log entries. State whether static files and the home page fail, whether only pretty URLs fail, and whether a working comparison domain exists. This lets the administrator investigate the correct layer without asking you to weaken every site’s permissions.

The practical order is consistent: establish the scope, read the server log, repair shared access when the outage is broad, compare local configuration when it is narrow, verify rewrite and Multisite routing for URL-specific failures, and treat sensitive-file denials as possible protection. WordPress itself is often not the component issuing the 403.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.