声明:方法不是原创,网上有很多同一个空间开两个wordpress的配置,我根据它们的方法也的配置成功,并整合了4个wordpress公用一个空间,共一个数据库。
这样很适合虚拟主机,可以绑定多个域名的空间,非常省钱,我的安装方法,如果你原来已经有一个wordpress已经运行,那么你要先把wp-config.php改名或者删除,我选择改名为wp-config.php.bak然后再把另外一个几个域名绑定到这个空间,打开你的域名进行安装,在设置表的时候使用另外一个表头,安装成功后再删除或者改名wp-config.php,直到你要的域名全部安装一次,因为这样是为你安装不同数据库的表,这样才能独立数据。
然后开始修改你的wp-config.php文件,
方法一:同一个网站程序,同数据库,再运行完安装后修改文件wp-config.php,把$table_prefix = 'wp_';替换为
1 2 3 4 5 6 7 8 |
<pre class="wrap:true lang:default decode:true "> 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');在两个参数前面加/**就注释了
然后在相同的位置加上
1 2 3 4 5 6 7 8 |
<pre class="wrap:true lang:default decode:true "> 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');} |
方法二:如果你想同个站点,但数据库使用不同的库,这个需求是因为一些站点的数据库比较大,同一个目录装数据备份工作麻烦,那么下面的方法适合你:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<pre class="wrap:true lang:default decode:true "> 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'); |
全部在前面加//**屏蔽掉
然后在你屏蔽的这些数据前面加上下面的代码,参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<pre class="wrap:true lang:default decode:true ">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 文件,找到以下代码:
1 |
<pre class="wrap:true lang:default decode:true ">define( 'WP_DEBUG', false ); |
在其之后添加以下代码:
1 |
<pre class="wrap:true lang:default decode:true ">define('WP_ALLOW_MULTISITE', true); |
登录后台,提示你禁用全部的插件,照做,然后你可以看到右上角顶部你的用户名多了“管理”的功能,点进去,可以看到里面的功能咯,
(新版本会在 工具-》站点网络配置,来安装你的多站点,根据提示进修修改wp-config.php)
设置前请先在wp-content 目录下创建 blogs.dir 目录,属性为 777 模式。这个目录用于存储子站点上传的媒体文件
然后系统会让你修改wp-config.php,和你的.htaccess按照提示设置就Ok了,这个方法适合子目录存放不同的wordpress和二级域名多个站点。
1 2 3 4 5 6 |
<pre class="wrap:true lang:default decode:true ">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); |
为了保证站点安全,需要接着添加以下代码尾随其后:
1 2 3 4 5 6 |
<pre class="wrap:true lang:default decode:true "> define( 'auth_salt', '...' ); define( 'secure_auth_salt', '...' ); define( 'logged_in_salt', '...' ); define( 'nonce_salt', '...' ); |
完事啦?还没有
这个时候你原来的有数据的那个网站需要重新设定一下固定链接,其它的网站就像新安装的,你想怎么设就怎么设了,这样的效果总结一下。
共用模版,公用插件,但你删除模版和插件时也是全部都删除的哟。
完了?
还没有,注意sitemap,因为这个插件是生成一个地图文件,所以每个站点生成的文件相同那么它们就会给覆盖的,还有wordpress本来就很吃内存,同时在后台更新的时候,你的空间商关闭你的站点,就全部死翘翘了,请注意哟。省钱也是有风险的。
更正:
安装了cache类的插件出现了访问同一个网站的问题,现在测试每个网站使用不同的cache插件。
添加伪静态规则
Apache 规则
子域名模式下的规则代码:
1 2 3 4 5 6 7 8 9 10 |
<pre class="wrap:true lang:default decode:true "> 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] |
子目录模式下的规则代码:
1 2 3 4 5 6 7 8 9 10 |
<pre class="wrap:true lang:default decode:true "> 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 规则伪静态(子域名)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<pre class="wrap:true lang:default decode:true "> #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伪静态(子目录)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 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 这个也是一个选择