近期遇到不少的网友在玩转WordPress多站点模式,我们所谓的多站点模式可能是在一台服务器或者多台服务器安装多个WP程序解析不同的域名实现的多站点模式。但是对于他们来说是一个WordPress程序通过配置修改进行多站点和多域名的设置共享一个数据库,那具体如何设置的呢?
/* Multisite settings */ define( 'WP_ALLOW_MULTISITE', true );
我们需要在WordPress程序的WP-CONFIG.PHP中进添加代码,开启多站点模式。
添加之后,刷新WP后台,我们可以看到会多一个"工具"-"网络设置"。
然后我们选择是子域名和还二级目录作为配置。然后看到需要继续在配置文件加入他给的代码。
配置完毕之后,我们还需要给站点配置伪静态规则重新设置。
这是Nginx规则,我们根据需要修改:
# 根据自己的实际修改下面的域名 log_format yourdomain.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; server { listen 80; # 根据自己的实际修改下面的域名 server_name yourdomain.com *.yourdomain.com; index index.html index.htm index.php default.html default.htm default.php; # 注意修改下面的网站目录 root /mnt/wwwroot/yourdomain.com; #include wordpress.conf; #以下是 lnmp 1.0 的 wordpress.conf 规则,也就是上一行 include wordpress.conf 里面的 location / { if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } } # wordpress.conf 规则 结束 location ~ .*\.(php|php5)?$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log /home/wwwlogs/huchangmeng.com.log huchangmeng.com; #ignored: “-” thing used or unknown variable in regex/rew rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /\wp-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).*) /\ last; rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /\ last; rewrite /. /index.php last; }
我们看到,实际上多站点模式功能还是很强大的,我们可以用主域名的二级域名,也可以用其他域名,但是需要做映射解析。多站点模式,我们可以直接在主站点管理和同步数据到多站点。
附带Apache伪静态规则:
如果你的服务器使用的是Aache环境,使用下面的代码替换网站根目录下的 .htaccess 里面的所有代码
子域名模式下的规则代码:
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]
子目录模式下的规则代码:
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]
评论