WordPress有一个多站点方案,即只需安装一次WordPress,并在此WordPress安装中创建和管理多个单独的站点,而这些工作全部都由一个管理员完成。
在开启多站点前,我们需要了解如下问题:
- 先确定是采用子域名还是子目录方式,子域名方案如a.olzl.net和b.olzl.net,子目录方案如olzl.net/a和olzl.net/b。
- 如果希望采用子域名方案,则wordpress程序必须在站点根目录中。
- 安装前先停用所有插件。
- Wordprss自带sitemap功能,多站点模式下部分sitemap插件无法使用,如果采用子目录方案,建议将子站点的sitemap加到robots.txt中。
- Wordprss自带robots重定向,根目录是的robots不会生效,需要修改wp-includes/functions.php中的do_robots模块。
- 建议将主站点上传目录和子站点的统一放到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开启多站点方法及注意事项