4

I have searched all over and have found many tutorials on how to set up a multisite, domain mapping, and even use virtual hosts on my local machine, but I can't seem to find how to do all of those.

I would like to have WordPress multisite run on my localhost using fake domain names, such as mysite-1.dev, mysite-2.dev, mysite-3.dev, etc.

I'm running XAMPP with Apache on a Windows machine. In the httpd-vhosts file, I must specify a folder for the fake domain to go to, but if I'm using WordPress multisite, I'm unsure how to that.

Here is part of my httpd-vhost file:

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-1"
    ServerName mysite-1.dev
    Alias /mysite-1.dev "/home/mysite-1"
<Directory "/home/mysite-1">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-2"
    ServerName mysite-2.dev
    Alias /mysite-2.dev "/home/mysite-2"
<Directory "/home/mysite-2">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/mysite-3"
    ServerName mysite-3.dev
    Alias /mysite-3.dev "/home/mysite-3"
<Directory "/home/mysite-3">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

In my hosts file, I have:

127.0.0.1   mysite-1.dev
127.0.0.1   mysite-2.dev
127.0.0.1   mysite-3.dev

I've set up multisite in WordPress, and entered the wp-config.php and .htaccess files as required.

wp-config.php file is as follows:

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'mysite-1.dev');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define( 'SUNRISE', 'on' );
define('WP_TEMP_DIR',ABSPATH.'wp-content/uploads/');

And .htaccess is as follows:

# BEGIN WordPress
RewriteEngine On
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]
# END WordPress

By doing the setup this way, when I go to mysite-2.dev and mysite-3.dev, it looks in the folder, and there is nothing in c:/home/mysite-2.dev and c:/home/mysite-3.dev, so it shows an error:

Call to undefined function wp_get_current_user().

In c:/home/mysite-1.dev, it has all of the WordPress multisite files, plugins, themes, etc., so it works fine.

I know this is probably a configuration issue, but I am unsure how to set it up properly. Can anyone point me in the right direction for setting a WordPress multisite using fake domains and domain mapping?

Thank you all in advance!

1 Answer 1

3

DocumentRoot for each VirtualHost should point to the directory where you installed WP multisite. There is no actual directory for subsites, they're all virtual.

Using your example:

<VirtualHost *:80>
    DocumentRoot "C:/home/wp-intall-directory"
    ServerName mysite-1.dev
    # not required Alias /mysite-1.dev "/home/mysite-1"
    <Directory "/home/wp-intall-directory">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/home/wp-intall-directory"
    ServerName mysite-2.dev
    # not required Alias /mysite-2.dev "/home/mysite-2"
    <Directory "/home/wp-intall-directory">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
.
.
.
5
  • Works like a charm! Thank you. This is the first explanation that I've found. Makes sense because it is "virtual" host, so there is no folder. :) Commented Mar 4, 2016 at 11:33
  • A virtual host can have it's own DocumentRoot but not in the case of WordPress multisite.
    – BillK
    Commented Mar 4, 2016 at 18:10
  • Can this work for a live environment? i am having same issue getting subsites to virtually map to a TLD. My hosting panel uses Plesk interface. I've se the site up as a separate domain which uses the same root folder as the primary domain, the DNS point sot the same server and i've made sure the domain is set in the WordPress multisite settings.
    – Amesey
    Commented Jan 21 at 14:25
  • This is just the 8 year old answer i needed!! Follow up question. Can I, instead of making a .conf file for each subdomain, can I just make one httpd-vhost.conf
    – Mo Hussain
    Commented Aug 26 at 23:40
  • @MoHussain Things have changed a lot in the last 8 years. LocalWP takes care of all of that automatically.
    – Chris Cox
    Commented Aug 28 at 9:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.