14+ years building on WordPress / Replies in under 5 hours
Troubleshooting 6 min read · Updated July 2026

How to Fix ‘This Site Can’t Be Reached’ Error in WordPress

AK
Ajay Khandal
WordPress Developer
Illustration of a browser window with an unplugged, sparking cable failing to connect to a distant server, representing a WordPress site that can't be reached
TL;DR

'This site can't be reached' is a browser-level error that appears before WordPress loads. The error code tells you the cause: DNS_PROBE_FINISHED_NXDOMAIN means DNS isn't resolving (check domain expiry and nameservers); ERR_CONNECTION_REFUSED means the web server is stopped (restart Apache/Nginx or contact your host); ERR_CONNECTION_TIMED_OUT means the server is completely unreachable (likely down or firewall). If it's only down for you, clear browser cache, flush local DNS, and try a different network. If it's down globally, check DNS records and web server status. For WordPress-specific causes, try renaming .htaccess and disabling plugins via FTP.

“This site can’t be reached” appears before WordPress even loads — which means the problem is either with your network, DNS, or the web server itself, not WordPress. The exact browser error code tells you which layer to look at first.

Read the Error Code Before Anything Else

Chrome, Firefox, and Edge all show a sub-code beneath the main message. Each one points to a different cause:

  • DNS_PROBE_FINISHED_NXDOMAIN — Your domain name isn’t resolving. DNS isn’t finding the server. Usually means a DNS misconfiguration, expired domain, or propagation still in progress after a host migration.
  • ERR_CONNECTION_REFUSED — DNS resolved fine but the server refused the connection. The web server (Apache/Nginx) is likely stopped or the port is blocked by a firewall.
  • ERR_CONNECTION_TIMED_OUT — The request reached nowhere. Either the server is completely down, a firewall is silently dropping packets, or there’s a network routing issue.
  • ERR_TOO_MANY_REDIRECTS — The server is up, but WordPress is caught in a redirect loop. Usually a misconfigured WordPress Address/Site URL or a caching plugin rewriting rules incorrectly.

If you see a WordPress error page rather than a browser error — like “Error Establishing a Database Connection” — that’s a different problem. The database connection fix guide handles that case.

Step 1: Confirm It’s Not Just You

Before touching anything server-side, verify the site is actually down globally and not a local issue on your machine or network.

Visit downforeveryoneorjustme.com and enter your URL, or ask someone on a different network to try loading it. If others can reach it fine, the problem is local — jump to Step 2. If it’s down everywhere, the issue is with the server or DNS — jump to Step 3.

Step 2: Fix Local Issues (If It’s Only Down for You)

Three quick local fixes in order of how fast they are to try:

Clear browser cache and cookies. In Chrome: Settings → Privacy and Security → Clear Browsing Data → tick Cookies and Cached images → Clear data. In Firefox: Settings → Privacy and Security → Cookies and Site Data → Clear Data.

Flush your local DNS cache. Your machine caches DNS lookups, and a stale record can point to the old server after a migration.

# Windows
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

# Linux
sudo systemd-resolve --flush-caches

Try a different browser or incognito mode. Rules out browser extensions interfering with the connection. If a different browser loads the site, a browser extension is the culprit — disable them one by one.

Try a different network. Switch from WiFi to mobile data or vice versa. If the site loads on one and not the other, your router or ISP is the issue — not the server.

Step 3: Check DNS (For DNS_PROBE_FINISHED_NXDOMAIN)

If the error code is DNS-related, the domain isn’t resolving to your server. Check whether the domain is actually pointing where it should:

# Check what IP your domain currently resolves to
nslookup yourdomain.com

# Or use dig
dig yourdomain.com A

Compare the returned IP against your hosting provider’s nameserver records. Common causes:

  • Domain expired — Log into your domain registrar and check the expiry date. An expired domain stops resolving immediately.
  • Nameservers pointing to old host — If you recently migrated hosting, the nameservers may not have been updated at the registrar level. DNS propagation after a nameserver change takes up to 48 hours.
  • A record deleted or changed — Check your DNS zone in cPanel or Cloudflare and confirm the A record points to the correct server IP.

DNS hijacking — where someone changes your nameservers without your knowledge — is less common but worth checking if you’ve had any recent security incidents. That scenario usually accompanies other symptoms; this guide on WordPress security threats covers the signs.

Step 4: Check Whether the Web Server Is Running (For ERR_CONNECTION_REFUSED)

DNS is resolving correctly but the connection is being refused — the web server process itself is likely stopped. On a VPS or dedicated server with SSH access:

# Check Apache status
sudo systemctl status apache2

# Check Nginx status
sudo systemctl status nginx

# Restart if stopped
sudo systemctl restart apache2
# or
sudo systemctl restart nginx

On shared hosting you don’t have direct access to the web server, so contact your host’s support. Ask specifically whether Apache/Nginx is running for your account — not just whether the server is online. A server can be online while the web server process for a specific account is stopped due to resource abuse or a configuration error.

Also worth checking: your host’s status page and your hosting account’s suspension status. Hosts suspend accounts for exceeding resource limits, billing lapses, or TOS violations — a suspended account shows exactly this error from the outside.

Step 5: Fix a Corrupted .htaccess File

If the web server is running but requests are still failing, a corrupted or badly configured .htaccess file can refuse or loop connections before WordPress even initialises. This is especially common after installing or misconfiguring a caching plugin — some write aggressive redirect rules that break everything.

  1. Connect via FTP or File Manager and navigate to your WordPress root.
  2. Enable hidden files (the .htaccess file is hidden by default).
  3. Rename .htaccess to .htaccess-backup.
  4. Reload the site. If it loads, the file was the problem.
  5. Go to Settings → Permalinks in wp-admin and click Save — WordPress will regenerate a clean .htaccess.

If a caching plugin corrupted the rules, disable that plugin before regenerating. The caching plugin comparison covers which ones are more prone to .htaccess conflicts and safer alternatives.

Step 6: Deactivate Plugins and Switch Theme

If the server is up, DNS is fine, and .htaccess is clean but the site is still unreachable, a plugin or theme may be generating a fatal PHP error that kills the response before it reaches the browser.

Disable all plugins via FTP by renaming the wp-content/plugins folder to plugins-disabled. If the site loads, rename it back and reactivate plugins one at a time. For the theme: rename your active theme’s folder inside wp-content/themes — WordPress will fall back to a default theme automatically.

Enable debug mode to surface the specific error:

// Add to wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

The log file appears at wp-content/debug.log. Look for fatal errors or uncaught exceptions — these will identify the exact plugin or theme function causing the failure. Remove these lines from wp-config.php once you’ve diagnosed the issue; leaving debug on in production leaks error details publicly.

How to Prevent It Next Time

  • Set up uptime monitoring. Tools like UptimeRobot (free tier available) ping your site every few minutes and alert you by email or SMS when it goes down — so you find out before your customers do.
  • Keep backups off-site. If a host suspension or server failure causes the outage, you need a backup that isn’t stored on the same server. The WordPress maintenance guide covers backup strategy in detail.
  • Renew your domain well in advance. Set auto-renew on the domain registrar level, not just on a payment card that might expire. Domain expiry is the most avoidable cause of this error.
  • Test .htaccess changes on staging. Any time you install a caching plugin or change permalink structure, test on a staging copy first. A broken .htaccess takes the live site offline instantly.

If you’re also dealing with a maintenance mode message or a database error at the same time, those are separate issues — the maintenance mode fix and the database connection error guide cover each case.

Still Down?

If you’ve worked through all six steps and the site is still unreachable, it’s time to escalate to your host — with the specific error code and what you’ve already ruled out. If you’d rather not deal with the back-and-forth, get in touch and I can handle the diagnosis and fix directly.

Frequently asked questions

It means your browser couldn't establish a connection to the server before WordPress even loaded. The cause depends on the sub-error code: DNS_PROBE_FINISHED_NXDOMAIN means the domain isn't resolving; ERR_CONNECTION_REFUSED means the web server is stopped or blocking connections; ERR_CONNECTION_TIMED_OUT means the server or network is completely unreachable.

Visit downforeveryoneorjustme.com and enter your site URL, or ask someone on a different network to try loading it. If they can access it and you can't, the problem is local — clear your browser cache, flush your DNS cache, or try a different network. If it's down for everyone, the issue is on the server or DNS side.

This means your domain isn't resolving to a server. Check three things: (1) Is the domain expired? Log into your registrar and check. (2) Are the nameservers at the registrar pointing to the correct host? (3) Is the A record in your DNS zone pointing to the right server IP? After making DNS changes, allow up to 48 hours for propagation.

ERR_CONNECTION_REFUSED means DNS resolved correctly but the web server is refusing connections. On a VPS: run 'sudo systemctl status apache2' (or nginx) and restart it if stopped. On shared hosting: contact your host and ask whether the web server is running for your account, and whether your account has been suspended.

Yes. A badly configured .htaccess can cause the web server to refuse requests or trigger an infinite redirect before WordPress loads. To test: rename .htaccess to .htaccess-backup via FTP and reload the site. If it loads, go to Settings → Permalinks and click Save to regenerate a clean .htaccess file.

'This site can't be reached' is a browser error — the server never responded at all. 'Error Establishing a Database Connection' is a WordPress error — the server responded but WordPress couldn't connect to MySQL. If you see a WordPress-branded error page, the web server is working fine and the issue is with the database.

AK

Written by Ajay Khandal

WordPress Developer — building, fixing and speeding up WordPress sites.

Work with me →