WordPress Multisite: Configure Subdomain and Subdirectory to Manage Multiple Sites with a Single Installation
> cd .. / HUB_EDITORIALE
Sviluppo di siti web

WordPress Multisite: Configure Subdomain and Subdirectory to Manage Multiple Sites with a Single Installation

[2026-07-25] Author: Ing. Calogero Bono
> share
Zenithby Meteora Web The operating system for your business. Social, clients, bookings and invoices in one platform. Gyms, barbers, professionals. Discover Zenith Free demo · no card

You have a client who wants to launch a network of regional online stores, or a school with a site for each course, or a publisher with dozens of magazines. Every time they ask, you install WordPress from scratch — same plugins, same theme, same configurations. You waste hours. And when a security update arrives, you repeat it on every installation. It's madness.

We, at Meteora Web, have been managing WordPress infrastructures for clients across Italy for years. The solution is WordPress Multisite: one installation hosts multiple sites, sharing core, plugins and themes, but independent for content, users and domain. The first choice is: subdomain or subdirectory? In this guide we'll show you how to configure both, when to choose each, and how to avoid the classic mistakes that make even experts cry.

Why Choose WordPress Multisite to Manage Multiple Sites?

Start from the real problem: you have five separate WordPress sites. Every month you update plugins and core on each. Every year a backup for each. If one gets hacked, the others aren't better protected. Maintenance multiplies the cost. With Multisite, you update once, plugins can be network-activated, backups are done on a single database (with separate tables per site). The savings are immediate.

It's not for everyone: if the sites have very different needs (different themes, incompatible plugins, separate hosting for performance), Multisite can become a bottleneck. We recommend it when sites share at least 70% of the technical base: same theme or child theme, same plugin set, same content type.

Sponsored Protocol

When is Multisite the right choice?

  • Networks of franchise or territorial branches
  • Multi-store e-commerce platforms (WooCommerce supports Multisite with some caveats)
  • Blog or magazine networks with centralized editorial
  • Schools or universities with a site per course or department
  • Agencies managing similar sites for clients (e.g., professional portfolios)

When should you avoid it?

  • Clients requiring separate hosting for compliance or performance
  • Plugins not compatible with Multisite (always check)
  • Completely independent user management without central admin (possible but complex)

Subdomain vs Subdirectory: Which Structure to Choose?

WordPress Multisite offers two modes for addressing sites: subdomain (e.g., milano.yoursite.com) or subdirectory (e.g., yoursite.com/milano). The difference isn't just aesthetic: it affects SEO, DNS management, and caching. Let's look at pros and cons.

Subdirectory (path-based) – when to use it

Child sites are subfolders of the main domain. Example: yoursite.com/shop1, yoursite.com/shop2. SEO benefits: all link juice stays on the main domain, easier to build authority. Drawbacks: if a child site gets penalized or has poor content, it can drag down the whole domain. Also, plugins and themes must handle relative paths without issues.

Subdomain (subdomain-based) – when to use it

Each site has its own subdomain: milano.yoursite.com, roma.yoursite.com. SEO benefits: Google tends to treat each subdomain as a separate entity, useful for very different topics (e.g., cooking blog vs motoring blog). Drawbacks: each subdomain starts from zero authority; more DNS records and wildcard configuration required. Also, some caching services (CDN) treat subdomains as separate hosts.

Sponsored Protocol

Practical choice for Italian SMEs

We, at Meteora Web, recommend subdirectory for most projects: simpler to set up, no wildcard DNS required, and keeps authority on the main domain. Subdomain is preferable only if you need to isolate content sharply (e.g., sites for different clients with their own branding) or for privacy/cookie reasons (some GDPR scenarios).

How to Configure WordPress Multisite with Subdirectory

Let's see the operational steps. Start from a standard, working WordPress installation. Never convert a live site into Multisite without a full backup and a test environment.

Step 1: Enable Multisite in wp-config.php

Open wp-config.php in your WordPress root. Add this line before the /* That's all, stop editing! */ comment:

define( 'WP_ALLOW_MULTISITE', true );

Save and reload the admin panel. You should see Network Setup under Tools.

Step 2: Run the Network Setup

Go to Tools → Network Setup. WordPress will ask whether to use subdomain or subdirectory. Choose Subdirectory. If your WordPress is in a subfolder (e.g., yoursite.com/wordpress), the subdirectory option may not be available. In that case, use subdomain or move WordPress to root.

WordPress will generate lines to add to wp-config.php and the .htaccess file. Don't skip this step.

Sponsored Protocol

Step 3: Add Network Constants

In wp-config.php, after define( 'WP_ALLOW_MULTISITE', true );, add the generated lines (example):

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // false for subdirectory
define('DOMAIN_CURRENT_SITE', 'yoursite.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Step 4: Update .htaccess

Replace the rewrite rules in your .htaccess with those provided by WordPress. If you didn't save them, here they are for subdirectory:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Note: some hosts (Nginx) don't use .htaccess. In that case you must configure rewrite rules directly in the server config file (see your host's documentation).

Step 5: Log in and Create the First Site

Now return to the dashboard. You should see My Sites → Network Admin. From there you can create new sites via Sites → Add New. For subdirectory, the path will be yoursite.com/newsite.

How to Configure WordPress Multisite with Subdomain

The process is similar, but with important differences.

Step 1: Enable Multisite and Choose Subdomain

Follow steps 1 and 2 as above, but select Subdomain. WordPress will give you constants with define('SUBDOMAIN_INSTALL', true);.

Sponsored Protocol

Step 2: Configure DNS with a Wildcard Record

For subdomains to work, you need a DNS A or CNAME wildcard record: *.yoursite.com pointing to the same IP as the main domain. Without it, subdomains won't resolve. Many hosting panels (cPanel, Plesk) have a “Subdomain Wildcard” or “Catch-All” option. If not, contact support.

Step 3: Update .htaccess (for subdomain)

The rules are the same as for subdirectory; WordPress generates identical code. The difference is handled internally by the constants.

Step 4: Create the First Subdomain

In Network Admin → Sites → Add New, enter the new site address (e.g., milan). WordPress will automatically convert it to milan.yoursite.com, provided the wildcard record is active.

Handling Common Errors in Multisite Configuration

Even following the steps, problems are frequent. Here are the ones we see most in projects that arrive to us.

Error 1: “The network WordPress is already installed” even though it's not

Happens if you tried to set up multisite before and removed the lines. WordPress stores a flag in the database. Solution: go to phpMyAdmin, find the wp_sitemeta table and delete the row with meta_key = 'site_admins'. Then remove the constants from wp-config.php and start over.

Error 2: Child sites with wrong URLs or redirect loops

Often caused by caching plugins that don't handle the correct domain. Disable all caching plugins during configuration. If you use Redis or Varnish, ensure they respect the host header. For subdomain, verify DNS propagation (use dig milan.yoursite.com).

Sponsored Protocol

Error 3: Plugins not compatible with Multisite

Many plugins are not declared compatible. Before network-activating them, test on a child site. We have a checklist:

  • Does the plugin use network_admin_url() instead of admin_url()?
  • Does it have custom database tables? Could conflict between sites.
  • Does it support switch_to_blog() correctly?

Error 4: Shared uploads management

By default, media files for each site are in separate folders (e.g., wp-content/uploads/sites/2/). If you need centralized storage, consider plugins like Network Shared Media.

What To Do Now

  1. Make a full backup of the database and files before any modification.
  2. Set up a staging environment to test the network risk-free.
  3. Choose the structure: subdirectory for most projects, subdomain only when strong isolation is needed.
  4. Check compatibility of every plugin and theme with Multisite.
  5. Establish an update policy: update plugins and core on the network, but always test first on a test child site.

If you're already in a project and have doubts, check out our pillar page on advanced WordPress development: you'll find guides on custom themes, REST API and more. We, at Meteora Web, work with these technologies every day. If you need a consultation or an audit on your current infrastructure, contact us.

> share
Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Ingegnere informatico, fondatore di Meteora Web e Zenith OS. System administrator e progettista di piattaforme, app e CMS proprietari, con esperienza in sviluppo full-stack, marketing digitale ed ecosistema Google.
[ Read Full Dossier ]

> METEORA_WEB // DIGITAL AGENCY

We build the digital presence your business deserves.

Websites, social media, online advertising, e-commerce and high-performance hosting, engineered with method by computer engineers in Sciacca, for all of Italy.

> MW_JOURNAL

> READ_ALL()