WordPress开启多站点方法及注意事项

WordPress有一个多站点方案,即只需安装一次WordPress,并在此WordPress安装中创建和管理多个单独的站点,而这些工作全部都由一个管理员完成。

在开启多站点前,我们需要了解如下问题:

  1. 先确定是采用子域名还是子目录方式,子域名方案如a.olzl.net和b.olzl.net,子目录方案如olzl.net/a和olzl.net/b。
  2. 如果希望采用子域名方案,则wordpress程序必须在站点根目录中。
  3. 安装前先停用所有插件。
  4. Wordprss自带sitemap功能,多站点模式下部分sitemap插件无法使用,如果采用子目录方案,建议将子站点的sitemap加到robots.txt中。
  5. Wordprss自带robots重定向,根目录是的robots不会生效,需要修改wp-includes/functions.php中的do_robots模块。
  6. 建议将主站点上传目录和子站点的统一放到sites目录中,在主站点设置中修改“upload_path”和“upload_url_path”即可。

0x01

修改wp-config.php,加入以下代码:

define('WP_ALLOW_MULTISITE', true);
/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

0x02

刷新网站后台,然后进入“工具→配置网络”。

在配置界面有两个选择,即“子域名”和“子目录”,建议根据实际需求选择合适的方案,本文以子目录方案为例。

0x03

按照说明在wp-config.php中加入以下代码:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.olzl.net');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

如果您希望采用子域名方案,将以上代码中的SUBDOMAIN_INSTALL修改为true

0x04

Nginx环境修改该站点的nginx配置,在server代码段中追加以下代码:

    # 重定向favicon,相当于禁用wp内置的do_favicon
    rewrite ^/([_0-9a-zA-Z-]+/)?favicon.* /favicon.ico last;

    rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
    if (-f $request_filename){
        set $rule_2 1;
    }
    if (-d $request_filename){
        set $rule_2 1;
    }
    if ($rule_2 = "1"){
        #ignored: “-” thing used or unknown variable in regex/rew
    }

    rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2          last;
    rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$                       /$2          last;
    rewrite /.                                                  /index.php   last;

如果采用的是子域名方案,需要在server_name段加入绑定的域名,如:

server {
server_name    olzl.net a.olzl.net b.olzl.net;
...
}
# 如果启用了HTTPS,且不是根域名SSL证书时,每个域名需要单独写server段
# server {
# server_name olzl.net;
# ...
# }
# server {
# server_name a.olzl.net;
# ...
# }

保存后重新加载nginx配置。

Apache环境修改网站根目录下的.htaccess文件:

# --子目录方案-- #

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]

# --子域名方案-- #"

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]

0x05

重新登录后台,此时您会发现主站点的固定链接默认加上了“blog”字符,如果您不喜欢可以通过运行以下SQL语句去掉:

UPDATE wp_options
SET option_value = REPLACE(option_value, '/blog/', '/')
WHERE option_name = 'permalink_structure' OR
      option_name = 'category_base' OR
      option_name = 'tag_base';
UPDATE wp_options
SET option_value = REPLACE(option_value, '"blog/', '"')
WHERE option_name = 'rewrite_rules';

也可以编辑站点进入设置页面,修改“Permalink Structure”和“Tag Base”的值。

现在可以启用插件,然后进入“我的站点→管理网络→站点”中配置新站点了。

原创文章禁止转载:技术学堂 » WordPress开启多站点方法及注意事项

精彩评论

8+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏