Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchIf Apache shows its default page instead of your WordPress site, Apache is reachable but the request is being handled by the wrong virtual host or the wrong DocumentRoot. WordPress is usually still on the server; Apache simply is not selecting the configuration that points to its files.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
Fix the problem in this order: confirm that the domain resolves to the intended server, locate the directory containing wp-admin, wp-includes, wp-content, and index.php, point a matching Apache virtual host at that directory, enable it, validate the configuration, reload Apache, and test with an explicit Host header.
As an Amazon Associate I earn from qualifying purchases.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What the Apache default page is telling you
The default page is an Apache response, not a WordPress error screen. That distinction narrows the fault considerably: the web server accepted the connection, but request routing selected a site configuration whose content root is still Apache’s welcome directory.
Apache chooses a virtual host before it serves files
For name-based hosting, Apache compares the hostname in the request’s Host header with ServerName and ServerAlias values in its enabled <VirtualHost> blocks. The selected block supplies the DocumentRoot, and Apache maps the URL path beneath that directory. A WordPress installation in another directory cannot be reached until its virtual host is selected.
#1 Best Overall
Why the default site wins
- The domain’s A or AAAA record points to a different machine than the one containing WordPress.
- The hostname in the browser does not match the virtual host’s
ServerNameorServerAlias. - The WordPress site file exists but has not been enabled.
- The request is reaching the first or primary virtual host for that address and port, often the distribution’s default site.
- The intended virtual host is enabled, but its
DocumentRootstill points to Apache’s default directory. - You tested the server’s raw IP address. An IP request commonly selects the default virtual host because it carries a different or missing hostname.
Check DNS and the exact URL first
Compare A and AAAA records with the server
Look up the domain’s A record (IPv4) and AAAA record (IPv6). Compare every returned address with the intended server. If an old A record or an unexpected AAAA record remains, some visitors can be sent to a machine whose default site is still active even while IPv4 testing looks correct.
Check each hostname you actually use, including the bare domain and www. Apache treats them as separate names unless both are declared. The browser’s address must match one of the names configured in the virtual host.
Recommended Free Tools
Test the hostname, not only the IP
Opening http://203.0.113.10/ is not a reliable WordPress test. Use the real hostname so the request contains the same Host value Apache will receive from visitors. If DNS is not ready, add a temporary entry to the client’s hosts file that maps the hostname to the server IP. This provides local name resolution without changing public DNS and is suitable for testing.
Use a quick routing comparison
curl -I http://example.com/
That command tests public or local DNS. To bypass DNS while preserving the hostname, send the intended Host header directly to the server:
curl -I -H 'Host: example.com' http://127.0.0.1/
If the explicit-host request returns WordPress headers or a WordPress redirect while the raw-IP request returns the Apache page, Apache routing is working and the remaining fault is DNS or the URL being used. If both return the default page, inspect the enabled virtual hosts and their roots.
Find the directory Apache must serve
Do not guess the path from the domain name. Locate the directory that contains all of the following:
Free tools Windows power users keep installed
One-click scans. No signup required.
wp-adminwp-includeswp-contentindex.php
That exact directory is the WordPress document root for a normal root-domain installation. For example, if those files are in /var/www/example.com, use that path, not its parent /var/www and not a nested directory that contains a second copy.
On a server with multiple sites, verify the files by listing the directory and checking ownership and permissions. Apache must be able to traverse each parent directory and read the WordPress files. A wrong root can produce the Apache page; unreadable files usually produce a forbidden or server-error response instead, so distinguish the symptoms rather than changing permissions blindly.
Rank #2
Create or correct the WordPress virtual host
Minimal HTTP configuration
On Debian- or Ubuntu-based systems, create a site configuration such as /etc/apache2/sites-available/example.com.conf. Replace both the hostnames and the filesystem path with your values.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
ServerName identifies the primary hostname. Add every alternate hostname that should serve the same installation with ServerAlias. DocumentRoot must be the directory containing the WordPress files. The Directory block allows Apache to serve that path and permits a WordPress .htaccess file to operate.
Keep the hostname and root consistent on HTTPS
If visitors use HTTPS, configure a corresponding <VirtualHost *:443> with the same ServerName, aliases, and WordPress root, plus the certificate and key settings required by your server. A correct port-80 block does not automatically fix a port-443 request; HTTPS can select a different virtual host.
Check both the HTTP and HTTPS versions during troubleshooting. A redirect from HTTP to HTTPS can make it appear that the HTTP fix failed when the TLS virtual host is still pointing at the default site.
Enable the site, disable the catch-all, and reload Apache
On Debian and Ubuntu, run the following sequence from a privileged shell. The names differ on other operating systems, so use the equivalent site-management commands for your platform.
- Enable the configuration:
sudo a2ensite example.com.conf - If the default site is catching requests, disable it:
sudo a2dissite 000-default.conf - Validate syntax before touching the running service:
sudo apache2ctl configtestA successful check reports
Syntax OK. Correct every error it prints before continuing. - Reload Apache without dropping existing connections:
sudo systemctl reload apache2 - Repeat the hostname and explicit-
Host-header tests. Do not assume that saving a file changed the active configuration; Apache reads it when the site is enabled and the service is reloaded.
If your distribution uses a different service name or configuration layout, keep the same order: enable the vhost, validate syntax, then reload. Read the command’s error output instead of repeatedly restarting a broken configuration.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Prove which virtual host answered
Compare hostname and IP requests
curl -I -H 'Host: example.com' http://127.0.0.1/
curl -I http://127.0.0.1/
The first command asks Apache to route the request as example.com. The second supplies no matching hostname and commonly lands on the primary virtual host. A difference between the responses is useful evidence, not a contradiction.
Inspect Apache’s virtual-host map
On Debian and Ubuntu, list the loaded virtual hosts with:
Rank #3
sudo apache2ctl -S
Confirm that your hostname appears on the expected address and port, that the configuration file path is the one you edited, and that the default site is not unexpectedly first for the same listener. The exact listing command varies by distribution, but every Apache installation provides an equivalent way to display active vhost selection.
Use logs to identify the receiving site
Watch the access and error logs named in your vhost:
sudo tail -f /var/log/apache2/example-access.log /var/log/apache2/example-error.log
Then request the site once. If the request appears only in the default site’s access log, Apache never selected the WordPress vhost. If it reaches the WordPress log but returns an error, routing is fixed and the next problem is application, permissions, PHP, or rewriting.
Common symptoms and the next check
| Symptom | Most useful check | What the result means |
|---|---|---|
| Default Apache page for the domain | Compare A/AAAA records and run an explicit Host-header request |
The wrong server or virtual host is answering |
| WordPress appears with the hostname but not with the IP | Keep using the hostname for testing | Host-based routing works; the IP is selecting the default vhost |
| Site file exists but never receives requests | Run the platform’s enabled-vhost listing and check site enablement | The configuration is disabled, misspelled, or attached to another port |
| Default page disappears and WordPress URLs return 404 | Check AllowOverride All, rewrite support, and the root .htaccess |
Virtual-host selection works; permalink rewriting is a second-stage issue |
| Configuration reload fails | Run apache2ctl configtest and read the first reported error |
Apache rejected syntax, a path, a module, or another directive |
Fix WordPress installed in a subdirectory
A directory such as /var/www/example.com/wordpress requires an intentional URL design. Decide whether visitors should see example.com/wordpress or whether the site should appear at the root domain while the core files remain in that subdirectory.
Use a subdirectory URL
Set the WordPress and site URLs consistently for the subdirectory address, and point the virtual host at the directory layout you have chosen. Links, redirects, and rewrite rules must all agree that /wordpress is part of the public path. Mixing a root URL with a subdirectory installation without the corresponding WordPress settings produces broken links and redirects even after Apache routing is correct.
Use the root URL while keeping core files below it
WordPress documents a separate arrangement in which the core files remain in a subdirectory but the public site uses the root URL. It requires moving or copying the appropriate front-controller files into the web root and placing the matching root .htaccess rules so requests are sent to the subdirectory’s index.php. The .htaccess file is hidden; enable hidden-file display in an FTP client before looking for it.
Do not solve a subdirectory mismatch by changing only Apache’s DocumentRoot. Choose one URL model, apply the WordPress settings and front-controller rules for that model, then test the home page and a known permalink.
When permalinks fail after the default page is gone
A missing default page proves that the intended virtual host is now answering. If the home page works but posts or pages return 404 errors, check the rewrite stage:
Rank #4
- Confirm the vhost’s
<Directory>block containsAllowOverride Allso WordPress rules in.htaccesscan be read. - Ensure Apache’s rewrite functionality is enabled on systems that manage it as a module.
- Regenerate WordPress rewrite rules by visiting the Permalinks screen and saving the existing structure.
- Confirm that the root and subdirectory arrangement matches the URL settings described above.
These checks address permalink rewriting. They do not explain an Apache welcome page that appears before the WordPress virtual host has been selected.
Account for platform differences
Debian and Ubuntu
These systems commonly use /etc/apache2/sites-available, a2ensite, a2dissite, apache2ctl configtest, and the apache2 service name. The example commands in this guide match that layout.
RHEL-family systems
Virtual hosts are often stored in Apache’s included configuration tree rather than managed with a2ensite. Edit the distribution’s included file, verify that the relevant configuration is loaded, run the local syntax-check command, and reload the service commonly named httpd.
Local stacks, control panels, containers, and managed hosts
XAMPP-style stacks, hosting panels, containers, and managed WordPress services may generate vhost files or terminate TLS outside the Apache process you can see. Do not overwrite generated files blindly. Find the panel’s domain-to-root setting, container-mounted path, or provider configuration, then use its validation and reload procedure. The underlying diagnosis remains the same: the hostname must reach the intended server and the selected site must point at the directory containing WordPress.
Understand the complete request path
A browser request passes through several independent decisions. DNS selects an IP address. The connection then reaches a listener, usually port 80 for HTTP or 443 for HTTPS. Apache examines the address, port, and hostname and chooses one virtual host. Only then does it translate the URL path beneath that vhost’s DocumentRoot. Finally, directory permissions, .htaccess rules, PHP handling, and WordPress itself process the request.
This order explains why changing WordPress settings cannot repair an Apache welcome page. WordPress has not received the request yet. It also explains why an apparently harmless test can mislead you: a request to an IP address, a request to www instead of the bare domain, and a request over HTTPS may all take different routes.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Pitfalls that cause repeated misdiagnosis
- Editing an inactive file: A file in
sites-availableis not necessarily loaded. Confirm the enabled link or use the active-vhost listing after every change. - Fixing only port 80: Browsers may be redirected to HTTPS, where another vhost still has the default root or an incomplete certificate configuration.
- Declaring only one hostname: The bare domain and
wwware different hostnames. Add an alias or redirect deliberately rather than assuming Apache will combine them. - Disabling the default site too early: Keep a known-good rollback copy of the configuration and validate syntax before reloading. A syntax error can leave Apache unable to reload.
- Changing permissions indiscriminately: A default page indicates routing. Broad permission changes do not make Apache select a different vhost and can create a separate security problem.
- Testing through a cached redirect: Use
curland inspect theLocationheader so you know whether the response changed from HTTP to HTTPS or to a different hostname.
Choose between self-managed Apache and managed WordPress operations
If you repeatedly need to repair DNS, virtual hosts, certificates, permissions, backups, and updates, compare the operational trade-off before migrating. A managed service can remove server-level work, while a self-managed server exposes the files and logs needed for direct debugging.
| Deployment path | Control | Debuggability | Operational burden | Migration concern |
|---|---|---|---|---|
| Self-managed Apache | Direct control of DNS, vhosts, filesystem paths, and service settings | Direct access to Apache logs and configuration | You maintain DNS, TLS, updates, permissions, and backups | Preserve domains, redirects, database contents, and filesystem paths when moving |
| Managed WordPress hosting | Provider controls much of the web-server configuration | Depends on the provider’s logs and support tools | Provider may handle DNS, TLS, backups, and WordPress operations | Verify that domains, redirects, database data, and paths are preserved |
Further reading
For a deeper explanation of name-based virtual hosting, consult the Apache HTTP Server administration guide. Apache’s documentation emphasizes that each virtual host needs a matching ServerName and a DocumentRoot; it also notes that an unknown or missing Host header is served by the primary name-based virtual host. WordPress’s documentation on giving a site its own directory covers the hidden root .htaccess and front-controller arrangement needed for a subdirectory installation.
Best Value
Final verification checklist
- The domain’s A and AAAA records point to the server that contains this WordPress installation.
- Every hostname used by visitors appears as
ServerNameorServerAlias. DocumentRootcontainswp-admin,wp-includes,wp-content, andindex.php.- The intended site configuration is enabled and the unintended default site is not catching the request.
apache2ctl configtestor the platform equivalent succeeds before reload.- HTTP and HTTPS virtual hosts use the same hostname and WordPress root, with the correct certificate on HTTPS.
- An explicit
Host-header request reaches the WordPress access log. - Only after routing works do you troubleshoot
.htaccess, rewrites, PHP, permissions, or WordPress settings.
Frequently Asked Questions
Why does the Apache2 Ubuntu default page appear instead of WordPress?
Apache is reachable, but the request matched its primary or default virtual host, or that host still points to the default DocumentRoot. Check DNS, the hostname in ServerName/ServerAlias, site enablement, and the active document root.
Will requesting the server IP test my WordPress site?
Not reliably. An IP request has no matching domain name and commonly lands on Apache’s primary virtual host. Test the real hostname, or send an explicit Host header to the server IP.
What should DocumentRoot contain?
For a normal root-domain installation, it should be the directory containing wp-admin, wp-includes, wp-content, and index.php. Pointing at the parent directory or an unrelated copy can expose the default page.
Why does HTTP work but HTTPS show the Apache page?
Port 80 and port 443 can select different virtual hosts. Configure the HTTPS vhost with the same hostname and WordPress root, then check its certificate settings and logs.
Do I need to disable 000-default.conf?
Not always, but disabling it can prevent it from catching unmatched requests while you troubleshoot. First enable the intended site, run the syntax test, and reload using your distribution’s equivalent commands.
The home page works, but WordPress permalinks return 404. Is that the same problem?
Usually no. The vhost is now responding, so check AllowOverride All, rewrite support, the root .htaccess, and WordPress’s saved permalink rules.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsHow do I test a domain before DNS changes propagate?
Add a temporary hosts-file entry mapping the hostname to the intended server IP, then request the hostname. This preserves the correct Host header without changing public DNS.
When should I contact my hosting provider?
Contact the provider when a panel, container, or managed WordPress service generates the Apache configuration or terminates TLS outside your access. Give them the hostname, expected document root, response headers, and relevant log evidence.
The Bottom Line
An Apache default page usually means Apache answered with the wrong virtual host or DocumentRoot, not that WordPress vanished. Verify A and AAAA records, test the real hostname with an explicit Host header, point the active HTTP and HTTPS vhosts at the directory containing the WordPress files, validate and reload Apache, and use logs to confirm the request reaches that site before changing WordPress itself.
Quick Recap
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.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.




