可以使用多种方式建立多语言站点
1. 使用子目录独立安装wordpress
先在wordpress子目录安装新的wordpress作为子站点目录。数据库和文件全部独立。
如果子站点文件是直接从其他旧服务器复制的,不要有wp-config.php文件,安装的时候会自动生成。注意子站点成功运行后,清理替换旧设置里面的链接。
在主站的伪静态规则中添加重定向:
Nginx多站点伪静态规则:
location / {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename){
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
location /en/ {
index index.html index.php;
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 (.*) /en/index.php;
}
}2. 使用多语言插件
使用插件翻译页面。
Polylang
3. 子域名方式
可以直接新建站点[独立运维]或者使用wordpress多站点功能子域名模式[和主站点共用数据库和文件]。
4. 使用wordpress自带的多站点功能子目录模式:
数据库和文件与主站点共用,子站点不能与主站点独立运维。
/*开启多站点功能*/
define('WP_ALLOW_MULTISITE', true); // 开启多站点功能
define( 'COOKIE_DOMAIN', '' ); // 清除cookie限制,否则开启多站点后登录网站后台会提示“错误:Cookies被阻止或者您的浏览器不支持。要使用WordPress,您必须启用Cookies。”
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); //false意味着强制使用子目录功能,true使用子域名方式
define('DOMAIN_CURRENT_SITE', 'vanvin.net');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
//开启多站点功能1. 主站url必须是根域名,如https://baidu.com,不能使用https://www.baidu.com这样的形式。先在主站开启多站点功能;参考链接 https://blog.xieyc.com/install-wordpress-in-a-subdirectory/
https://www.lypblog.cn/archives/78
https://wordpress.org/support/article/create-a-network/ 2. 多站点功能正常后在主站根目录下建子文件夹,把wordpress安装包拷进去,需要数据库的话也导入进去。注意数据库表不要与主站点的冲突。
子站数据库里面的siteurl和home要改成子站点的url,如https://baidu.com/en
3. 安装。
4. 需要设置Nginx伪静态规则,否则子站链接会显示404.
Nginx多站点伪静态规则:
location / {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename){
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
location /en/ {
index index.html index.php;
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 (.*) /en/index.php;
}
}
5. 如果主站点使用的是第三方主题,主题里面的链接因为导入数据库的原因不会变,需要自行修改。注意页头页脚和小工具里面添加的链接。
5. 参考链接
5.1. 为什么开启多站点(网络管理)?
当我们只有一台服务器,但又想要搭建多个不同的博客(官网)时,一个站点已经满足不了我们的需求,因此我们需要开启WordPress的多站点功能。WordPress多站点功能为WordPress 3.0后的新特性,请注意版本问题。
5.2. 开启后有什么效果?
启动WordPress的多站点功能后,您可以:
1、可搭建多个独立的站点。各站点之间互补影响,对于每一个站点来说,根没有开启多站点功能的WordPress没有太大区别。
2、可为每个站点设定独立的域名。例如:您有域名xxx.com,您想要搭建两个网站分别用于博客A和博客B,那么您可以为博客A设置域名为a.xxx.com,博客B设置域名为b.xxx.com。当然,如果您有两个不同的域名,您也可以设置为博客A为a.com,博客B为b.com。
3、统一管理插件及主题。开启多站点功能后,您将可以统一管理所有站点的插件与主题,只需要在后台网络管理中安装一次,所有子站点都可以使用。
5.3. 如何开启?
1、检查WordPress版本。
开启多站点需要将WordPress升级至3.0版本以上。
2、停用所有插件。
包括WordPress中自带的插件,总之将您所能看见的所有插件都停用就对了。
3、开启网络配置。
编辑网站根目录下的 wp-config.php 文件,在其中添加如下内容:
define('WP_ALLOW_MULTISITE', true); // 开启多站点功能
define( 'COOKIE_DOMAIN', '' ); // 清除cookie限制,否则开启多站点后登录网站后台会提示“错误:Cookies被阻止或者您的浏览器不支持。要使用WordPress,您必须启用Cookies。”注意:不要添加到最后,您应该将其添加到下面到代码之前:
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');添加完成后,刷新后台,再次登录应该可以看到“工具”菜单下面多了一个“配置网络”选项。
4、确定您开启多站点的方式
WordPress有两种开启多站点的方式:子域名 和 子目录,区别如下:
子域名:使用不同的域名来访问您的子站点。如:a.xxx.com 和 b.xxx.com。
当然,不仅限于子域名,不同的域名也是可以的,如:www.a.com 和 www.b.com。
注:开启子域名需要将主站的域名的泛域名解析开启,即添加一条形如*.xxx.com的A类型域名解析记录。
子目录: 使用不同的子目录来访问您的子站点。如:www.xxx.com/a/ 和 www.xxx.com/b/ 。
5、如果您使用的是子域名方式,检查您的WordPress域名
请确保您的WordPress域名设置为根域名,即不带www的域名,如:a.com。
设置方法:后台菜单栏中找到“设置->常规”,修改其中的“WordPress地址(URL)”。注意与“站点地址(URL)”的区别,“站点地址(URL)”表示浏览器输入什么网址才能访问本站点。
因为开启多站点后,将使用当前站点的域名作为跟域名(最重要的是后期不能该),后期的网络管理地址也将是它,其他的子站点的域名(与主站同根的子域名)将以此域名为根做子域名。
如:当前域名为xxx.com,那么创建完成后,xxx.com将是管理的网址(当然也同样具备博客站点功能,只不过管理所有子站的网址也在xxx.com上),而您创建的其他子站点域名应当是a.xxx.com、b.xxx.com等。
又如:当前域名不小心设置为www.xxx.com,那么创建完成后,www.xxx.com将是所有子站管理的网址,而您创建的其他子站点域名应当是a.www.xxx.com、b.www.xxx.com等,这显然不是我们所希望的。
6、开启多站点
前面的步骤都确认无误之后,填写上您的网络标题(管理所有站点的后台界面所显示的标题)、管理员邮箱(可不填),然后点击安装。
WordPress检查无误后,会生成两段代码,按照提示将代码加入到网站对应的文件中,建议先对修改的文件进行备份。两段代码类似如下:
1、将以下内容加入到在/home/www/htdocs/的wp-config.php文件,加在/* 到此为止,别再修改了!开始写博客吧。 */这行上方:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'xxx.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
2、将这些加入您位于/home/www/htdocs/的.htaccess文件,替换其他WordPress规则:
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]7、添加新站点
修改好文件之后,重新进入登录后台,可以发现左上角多了“我的站点”菜单,其中有“管理网络”选项,点击它进入网络的管理界面。
然后从菜单中进入“站点”->“所有站点”界面。
可以看到所有站点中只有一个站点,该站点就是之前的站点,且URL为之前设置的“WordPress(URL)”。
下面来添加一个新的站点。
点击添加站点按钮进入添加界面,可以看到“站点地址(URL)”选项中,只能设置根域名之下的子域名,而不能修改根域名。如果您恰好仅需要创建子域名站点,那么根据您的需要填写即可。若您需要创建其他域名的站点,也没关系,先随便填入一个站点名称,完成创建后,进入“所有站点”页面,选择您刚刚创建的站点,点击编辑,即可更改您的站点域名(包括根域名都可以修改)。
然后进入主站点的设置界面,将看到站点URL为灰色,即不可设置状态,到这里您应该发现,第4、5步的重要性了。因此开启多站点之前,一定要按第4、5步确定你的主站点域名