Can I use WP Multi-site on a sub-domain with a different theme but use all the original site’s posts/pages?

Here’s an example of a solution I configured, which leaves the site in the network, but establishes a domain map from any registered domain, to the network. It makes the network site appear to be a completely independent site, with all the functionality (log-in, etc.) intact.

Goal:

Map client’s registered domain, both www.foosite.com and foosite.com over to our multisite network mymultisite.com – and make it as easy as possible on the client (i.e. no mucking around with CNAME or A records, at their registrar).

Procedure:

Using Amazon Route 53 as the DNS system.

  1. With Amazon AWS Route 53 handles the DNS, so we first create a hosted zone for the client’s registered domain (foosite.com) with a www CNAME record pointing to www.mymultisite.com

  2. Set up an S3 bucket in Amazon AWS for the (non-www) client’s foosite.com and statically map that to www.foosite.com

  3. Back in the Route 53 hosted zone, create an A record for the (non-www) foosite.com and specify it as an Alias, pointing it to the bucket created in step 2. This assures that both www.foosite.com and foosite.com will end up pointing to www.mymultisite.com

  4. In the multisite network, go to the client’s site in network admin and edit the site URL, changing it to www.foosite.com

  5. In the hosting account that hosts mymultisite.com specify an add-on domain (or a parked domain) called foosite.com and point it to public_html (or wherever you have WP installed). This effectively creates a virtual host record in Apache config, for the incoming mapped site.

(note: If the multisite is hosted at a static IP address and is the only site at that address, and the hosting company allows dynamic mapping of incoming domains to the site’s document root…then you don’t have to use add-on or parked domains. Check with your hosting company if unsure).

  1. In your wp-config.php for the multisite, you need to add a line: define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );

Result:

You’ve established a complete DNS solution for the mapped domain. All you have to do is tell the client to update their registrar for their domain, specifying the Amazon nameservers that are recorded in your hosted zone at Route 53 as their DNS. Your clients don’t have to mess around with CNAME or A records at all – you are handling the mapping completely, at Route 53. Furthermore, due to the magic of the AWS Alias record, your multisite doesn’t even need to be on a static IP address (although I keep it on one, just to be safe).

If using another system as the nameserver (e.g. Enom, or GoDaddy), you’d set up an A record for their domain which points to the static IP address of mymultisite.com. This is an ok answer but it carries the risk that if your static IP address ever changes, you’d have to tell your clients to go update the A record at their registrar.

I like the Route 53 solution a lot better. I also established a “white label” set of DNS at AWS following the guidance in this article. Now it is extremely simple – just tell clients here are your new nameservers to set at your registrar, and everything on the WP side works flawlessly. No need to maintain a static IP address in an A record.