How to setup a WordPress Multisite on a Plesk server

You can use this guide to install and setup WordPress Multisite.

This article is an expansion on an article from Plesk covering the same topic which is available here Opens in new window.

The information in this article also has the following requirements:

  1. WordPress v4.5 or newer since it will have Native Domain Mapping Opens in new window which means you do not need to install the WordPress MU Domain Mapping Opens in new window plugin.
  2. Plesk server with Let's Encrypt v2.6.0 or newer installed. Since v2.7.0 expired wildcard certificates are automatically renewed.
  3. Wildcard certificates for Let's Encrypt must also be enabled. If wildcard certificates are not enabled you must do so first before proceeding. To enable wildcard certificates follow the instructions in this Opens in new window Plesk article.
  1. Create a new Subscription with your domain, ie example.com

  2. Create a wildcard subdomain, *.example.com.

    ATTENTION: This step is only necessary if you plan on using sub-domains in your WordPress Multisite instead of sub-directories.

  3. Secure the primary domain (example.com) & webmail with a Let's Encrypt wildcard SSL Certificate

  4. Click on "Hosting Settings" for the primary domain, example.com.
    1. Select "none" for the preferred domain
    2. Under "security" check "Permanent SEO-safe 301 redirect from HTTP to HTTPS" and click OK

  5. Click on "Hosting Settings" for the wildcard domain *.example.com.

    ATTENTION: If you did not perform Step 2 above, proceed to Step 6.

    1. Under "security" check "Permanent SEO-safe 301 redirect from HTTP to HTTPS".
    2. For "certificate" select the wildcard certificate "Let's Encrypt example.com (*.example.com)" and click OK

  6. Click on the "Files" tab at the top.

  7. Click on "httpdocs" and remove all the files present in the folder.

  8. Click on the "WordPress" tab at the top

  9. In the WordPress Toolkit click "Install".

    ATTENTION: If you are using Plesk Onyx v17.5 then click on Install and choose either "Install (Quick)" or "Install (Custom)". Choosing "Install (Custom)" is preferred so you can have more control over the WordPress installation since we will be setting it up for Multisite.

    1. Make sure "https" is selected along with the primary domain example.com
    2. Choose a "Plugin/Theme set". A good starting choice is "WordPress Essentials with Jetpack"
    3. Under WordPress Administrator you can change the username and password if you desire.
    4. Under Automatic Update Settings select if and how you want WordPress to be updated.
    5. Click on "Install"
    6. Choose "no thanks" unless you wish to install more plugins.

  10. After the task completes, in the notification box, click on "hide completed".

  11. In the WordPress Toolkit, click on "login".

    ATTENTION: If you are unable to login please clear your browsers cookies and cache.

    1. A new window will open where you will be automatically logged in to the new WordPress site.
    2. Click on Plugins, then "active", click the check box to select all active plugins
    3. In the dropdown box for "bulk actions" select "deactivate" and click on "apply"
    4. Next, click on "Settings > General"
    5. Leave the "WordPress URL" without the "www" but make sure you add "www." to the "Site Address URL"
    6. Feel free to change the other settings on this page such as the Time Zone along with the Date & Time format, etc...
    7. Once done, click on "Apply"
    8. The page should refresh and say "Settings saved" or it may ask you to login again.
    9. Next, click on "Tools > Network Setup"
    10. Choose "Sub-domains" and click "Install". You will be prompted with a page telling you to modify the wp-config.php file along with the .htaccess file which are located in the httpdocs folder.

  12. Return to the Plesk control panel and click on "Manage files" from within the WordPress Toolkit, this will take you to the httpdocs folder for the primary domain.
    1. Click on the wp-config.php file to edit it.
    2. Scroll to the bottom of the file and look for /* That’s all, stop editing! Happy blogging. */
    3. Above that line you will see the following line, define('WP_ALLOW_MULTISITE', true);
    4. Below this and above the other one is where you paste the information provided to you in the WordPress installation which should look like this

      define('MULTISITE', true);
      define('SUBDOMAIN_INSTALL', true);
      define('DOMAIN_CURRENT_SITE', 'example.com');
      define('PATH_CURRENT_SITE', '/');
      define('SITE_ID_CURRENT_SITE', 1);
      define('BLOG_ID_CURRENT_SITE', 1);

    5. If registrations have been disabled then we want non-existent sites to be redirected back to the main site. If that is the case, add one more line at the bottom of that list above,

      define('NOBLOGREDIRECT', 'https://www.example.com');

      and any non-existent sites will now be redirected to the main site.
    6. Click on OK to save the changes.
    7. If no .htaccess file exists, create one by clicking on "New > Create file" and give it the name .htaccess
    8. Once created, click on the file name to edit it.
      1. If you are using sub-domains add the following in to the file

        # BEGIN WordPress
        <IfModule mod_rewrite.c>
        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]

        </IfModule>
        # END WordPress

      2. If you are using sub-directories add the following in to the file

        # BEGIN WordPress
        <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [L]

        # add a trailing slash to /wp-admin
        RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^ - [L]
        RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
        RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
        RewriteRule . index.php [L]

        </IfModule>
        # END WordPress

        Click OK to save the file

  13. Return to the WordPress installation and click the link at the bottom in small print that says "Log in" or you can close the page, go back to the WordPress Toolkit in the Plesk control panel and click "Login" to re-login to the site.

  14. WordPress MultiSite should now be active. To add a new site, Hover over "My Sites > Network Admin" then click on "Sites"
    1. Click the "Add New" button at the top
    2. Provide a name for the subdomain, ie sub-domain or sub-directory
    3. Provide a "site title"
    4. Enter the admin email. If you use a different email address than the one for the main site then it will create a new user and the username and password will be emailed to them.
    5. Click on "Add Site"
    6. If all goes well you should see a message at the top that says "Site added. Visit Dashboard or Edit Site".
    7. You should now see the new site under "My Sites".

  15. You will also need to "network activate" plugins and "network enable" themes to be used on the sites. To do this, hover over "My Sites > Network Admin" and select "Plugins".
    1. Next, select the plugins you want to Network Activate.
    2. From the "bulk actions" dropdown select Network Activate and click on Apply
    3. Do the same thing for "Themes" that you want to add.

If you find this tutorial has helped you please give a thumbs up. If you find something that needs to be corrected or improved please drop us a line by contacting us here Opens in new window and let us know.

  • WordPress, Multisite, SSL, Let's Encrypt, Plesk
  • 3 Users Found This Useful
Was this answer helpful?

Related Articles

How to replace the WordPress Cron with a real Cron job in Plesk for Linux

WordPress has their own pseudo Cron. The file wp-cron.php is triggered when a page is requested...

Powered by WHMCompleteSolution