声明:方法不是原创,网上有很多同一个空间开两个wordpress的配置,我根据它们的方法也的配置成功,并整合了4个wordpress公用一个空间,共一个数据库。
这样很适合虚拟主机,可以绑定多个域名的空间,非常省钱,我的安装方法,如果你原来已经有一个wordpress已经运行,那么你要先把wp-config.php改名或者删除,我选择改名为wp-config.php.bak然后再把另外一个几个域名绑定到这个空间,打开你的域名进行安装,在设置表的时候使用另外一个表头,安装成功后再删除或者改名wp-config.php,直到你要的域名全部安装一次,因为这样是为你安装不同数据库的表,这样才能独立数据。
然后开始修改你的wp-config.php文件,
方法一:同一个网站程序,同数据库,再运行完安装后修改文件wp-config.php,把$table_prefix = 'wp_';替换为
if($_SERVER["HTTP_HOST"]=="www.caohuan.com" || $_SERVER["HTTP_HOST"]=="caohuan.com"){$table_prefix = 'wp1_';}
else
if($_SERVER["HTTP_HOST"]=="www.gxsan.com" || $_SERVER["HTTP_HOST"]=="gxsan.com"){$table_prefix = 'wp2_';}
else
if($_SERVER["HTTP_HOST"]=="www.nntd.com" || $_SERVER["HTTP_HOST"]=="nntd.com"){$table_prefix = 'wp3_';}
else
if($_SERVER["HTTP_HOST"]=="www.cnyjk.com" || $_SERVER["HTTP_HOST"]=="cnyjk.com"){$table_prefix = 'wp4_';}
这个配置适合全部使用中文的版的wordpress,如果我要这些站点里使用英文界面的呢?如下:
注释掉$table_prefix = 'wp_';和define('WPLANG', 'zh_CN');在两个参数前面加/**就注释了
然后在相同的位置加上
if($_SERVER["HTTP_HOST"]=="www.caohuan.com" || $_SERVER["HTTP_HOST"]=="caohuan.com"){$table_prefix = 'wp1_';define('WPLANG', 'zh_CN'); //因为本人使用的英文版所以加上ch_CN来显示中文}
else
if($_SERVER["HTTP_HOST"]=="www.nntd.com" || $_SERVER["HTTP_HOST"]=="nntd.com"){$table_prefix = 'wp2_';define('WPLANG', ''); //这里留空就是默认你使用的版本的语言}
else
if($_SERVER["HTTP_HOST"]=="www.gxsan.com" || $_SERVER["HTTP_HOST"]=="gxsan.com"){$table_prefix = 'wp3_';define('WPLANG', 'zh_CN');}
else
if($_SERVER["HTTP_HOST"]=="www.gebiy.com" || $_SERVER["HTTP_HOST"]=="gebiy.com"){$table_prefix = 'wp4_';define('WPLANG', 'zh_CN');}
方法二:如果你想同个站点,但数据库使用不同的库,这个需求是因为一些站点的数据库比较大,同一个目录装数据备份工作麻烦,那么下面的方法适合你:
define('DB_NAME', 'caohuan.com');
define('DB_USER', 'caohuan.com');
define('DB_PASSWORD', 'caohuan.com');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp_';
define ('WPLANG', 'zh_CN');
全部在前面加//**屏蔽掉
然后在你屏蔽的这些数据前面加上下面的代码,参考
if($_SERVER["HTTP_HOST"]=="www.caohuan.com" || $_SERVER["HTTP_HOST"]=="caohuan.com"){
define('DB_NAME', 'caohuan.com');
define('DB_USER', 'caohuan.com');
define('DB_PASSWORD', 'caohuan.com');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp1_';
define ('WPLANG', 'zh_CN');
}else if($_SERVER["HTTP_HOST"]=="www.cnyjk.com" || $_SERVER["HTTP_HOST"]=="cnyjk.com"){
define('DB_NAME', 'caohuan.com');
define('DB_USER', 'caohuan.com');
define('DB_PASSWORD', 'caohuan.com');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp2_';
define ('WPLANG', 'zh_CN');
}else if($_SERVER["HTTP_HOST"]=="www.nntd.com" || $_SERVER["HTTP_HOST"]=="nntd.com"){
define('DB_NAME', 'caohuan.com');
define('DB_USER', 'caohuan.com');
define('DB_PASSWORD', 'caohuan.com');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp3_';
define ('WPLANG', 'zh_CN');
} if($_SERVER["HTTP_HOST"]=="www.gebiy.com" || $_SERVER["HTTP_HOST"]=="gebiy.com"){
define('DB_NAME', 'caohuan.com');
define('DB_USER', 'caohuan.com');
define('DB_PASSWORD', 'caohuan.com');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp4_';
define ('WPLANG', 'zh_CN');
}
方法三:在wordpress3.0以上的版本官方启用了多站点的方式:你可以直接在wp-config.php 文件,找到以下代码:
define( 'WP_DEBUG', false );
在其之后添加以下代码:
define('WP_ALLOW_MULTISITE', true);
登录后台,提示你禁用全部的插件,照做,然后你可以看到右上角顶部你的用户名多了“管理”的功能,点进去,可以看到里面的功能咯,
(新版本会在 工具-》站点网络配置,来安装你的多站点,根据提示进修修改wp-config.php)
设置前请先在wp-content 目录下创建 blogs.dir 目录,属性为 777 模式。这个目录用于存储子站点上传的媒体文件
然后系统会让你修改wp-config.php,和你的.htaccess按照提示设置就Ok了,这个方法适合子目录存放不同的wordpress和二级域名多个站点。
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'cnyjk.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
为了保证站点安全,需要接着添加以下代码尾随其后:
define( 'auth_salt', '...' );
define( 'secure_auth_salt', '...' );
define( 'logged_in_salt', '...' );
define( 'nonce_salt', '...' );
完事啦?还没有
这个时候你原来的有数据的那个网站需要重新设定一下固定链接,其它的网站就像新安装的,你想怎么设就怎么设了,这样的效果总结一下。
共用模版,公用插件,但你删除模版和插件时也是全部都删除的哟。
完了?
还没有,注意sitemap,因为这个插件是生成一个地图文件,所以每个站点生成的文件相同那么它们就会给覆盖的,还有wordpress本来就很吃内存,同时在后台更新的时候,你的空间商关闭你的站点,就全部死翘翘了,请注意哟。省钱也是有风险的。
更正:
安装了cache类的插件出现了访问同一个网站的问题,现在测试每个网站使用不同的cache插件。
添加伪静态规则
Apache 规则
子域名模式下的规则代码:
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]
Nginx 规则伪静态(子域名)
#ignored: “-” thing used or unknown variable in regex/rew
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;
Nginx伪静态(子目录)
# wordpress固定链接设置 try_files $uri $uri/ /index.php?$args; # 管理面板添加斜杠 rewrite /wp-admin$ $scheme://$host$uri/ permanent; # 传递上传文件给 wp-includes/ms-files.php rewrite /files/$ /index.php last; # 重写多站点 '.../wp-.*' and '.../*.php'. if (!-e $request_filename) { rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last; rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last; rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last; } apache不需要下面插件,直接在站点管理修改域名即可,而像nginx,nginx+apache反向代理,我旧需要下面的插件才能正常使用一级域名解释到子站点。
建议安装插件辅助
WordPress MU Domain Mapping:如果你需要你的子站点支持一级域名这个必须,虽然插件老,但一直都能用
安装后
1、需要在插件的目录的sunrise.php复制到wp-content/下
2、在wp-config.php添加define( 'SUNRISE', 'on' );
3、设置domain mapping
然后再去所有站点,编辑单个站点把“站点地址(URL)”改为一级域名。
插件:Domain Theme 这个也是一个选择