- NGINX Cookbook
- Tim Butler
- 290字
- 2025-04-04 18:27:15
How to do it...
To convert a WordPress site into a multisite, you need to add the configuration variable into your config file wp-config.php:
define( 'WP_ALLOW_MULTISITE', true );
Under the Tools menu, you'll now see an extra menu called Network Setup. This will present you with two main options, Sub-domains and Sub-directories. These are the two different ways the multisite installation will work. The Sub-domains option has the sites separated by domain names, for example, site1.nginxcookbook.com and site2.nginxcookbook.com. The Sub-directories option means that the sites are separated by directories, for example, www.nginxcookbook.com/site1 and www.nginxcookbook.com/site2.

There's no functional difference between the two, it's simply an aesthetic choice. However, once you've made your choice, you cannot return to the previous state.
Once you've made the choice, it will then provide the additional code to add to your wp-config.php file.
Here's the code for my example, which is subdirectory based:
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); define('DOMAIN_CURRENT_SITE', 'wordpress.nginxcookbook.com'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1);
Because NGINX doesn't support .htaccess files, the second part of the WordPress instructions will not work. Instead, we need to modify the NGINX configuration to provide the rewrite rules ourselves.
In the existing /etc/nginx/conf.d/wordpress.conf file, you'll need to add the following just after the location / directive:
if (!-e $request_filename) { rewrite /wp-admin$ $scheme://$host$uri/ permanent; rewrite ^(/[^/]+)?(/wp-.*) $2 last; rewrite ^(/[^/]+)?(/.*\.php) $2 last; }
Although the if statements are normally avoided if possible, in this instance, it will ensure the subdirectory multisite configuration works as expected. If you're expecting a few thousand concurrent users on your site, then it may be worthwhile investigating the static mapping of each site. There are plugins to assist with the map generations for this, but they are still more complex compared to the if statement.