将WordPress的子域名网站更改为子目录形式
我认为,在WordPress中,如果想要在一个域名上运营多个网站,很多情况下会选择利用WordPress的多站点功能来创建。多站点有两种方式,即子域名方式和子目录方式。在SEO方面,子目录方式可以获得父站点的域名权力,因此被认为具有更大的优势。
由于以下原因,我们有机会将之前使用子域名方式创建的WordPress网站转换为最近的子目录方式。我想在此介绍当时的步骤。
希望您能耐心阅读完这篇长文至最后,如果能对想要创建纯粹的子目录方式的新网站的人提供参考,我会非常感激。
环境
CentOS Linux:7.4.1708
nginx:1.12.2
PHP:7.0.27
WordPress:4.9.18
MySQL:5.6.38
CentOS Linux:7.4.1708
nginx:1.12.2
PHP:7.0.27
WordPress:4.9.18
MySQL:5.6.38
概况
如果在WordPress中创建多站点,有一个限制是“只有在母站点的第一篇文章发布一个月以上后,才能选择子域名方式”。
由于这个限制,我在创建子站点时选择了一开始使用子域名方式,但因为需要域名权重,后来决定改为子目录方式。
然而,由于上述限制,无法使用WordPress的多站点功能,因此通过直接操作服务器和数据库来实现子目录化,而不是使用WordPress的功能。
作为一个大致的方向,可以按照以下方式进行。
-
- 创建一个新目录
-
- 编辑配置文件
-
- 创建数据库和数据库用户
-
- 在步骤1创建的目录中安装WordPress
-
- 将安装好的WordPress目录名称从“wordpress”更改为“sub”
-
- 对旧网站的URL进行301重定向
-
- 访问新网站的URL并执行WordPress的初始设置
- 从现有网站迁移数据到新网站
另外,在以下的解释中,我们将使用以下方式指代变更前和变更后的网站URL。
变更前:https://sub.sample.com
之前的变更:https://sub.sample.com
更改后:https://sample.com/sub
目录结构
在服务器上的目录结构中,如果父网站的根目录是/var/www/wordpress,那么我们在/var/www/ 目录下创建一个名为“sub”的新目录,并在其中安装新的wordpress。
接着,我们将安装好的wordpress目录从“wordpress”改名为“sub”(原因将在后文说明)。
因此,子网站的wordpress根目录将如下所示。
/var/www/sub/sub/
此外,包括母站在内的目录结构如下所示。
root/
└ var/
└ www/
├ wordpress/ <-親サイトのwordpressルートディレクトリ
│
└ sub/
└ sub/ <-子サイトのwordpressルートディレクトリ
数据库组成
在WordPress中创建多个网站时,WordPress实例和数据库之间存在3种模式的关系,可在此页面中找到介绍。
安装多个WordPress网站
这次我们不使用WordPress的多站点功能,而是选择“单数据库”或“多数据库”中的一个。
这两者的区别在于是否分离数据库,但是为了避免与父站点使用中的数据库冲突,我们选择了创建两个数据库的“多数据库”配置。
步骤
1. 创建一个新目录
首先要登录服务器,在 /var/www/ 目录下创建一个名为 sub 的子目录。
cd /var/www/
mkdir sub
2. 编辑设置文件
接下来,我们需要编辑配置文件。
在我的环境中,我已经设置了在“nginx.conf”中加载位于“/etc/nginx/conf.d/”下的所有“.conf”文件,并将父站点的配置放在“wordpress.conf”中,子站点的配置放在“sub.conf”中。
通过这次操作,两个站点的域名部分都统一为“https://sample.com/”,所以我们将新子站点的配置写入“wordpress.conf”中。
为此,首先我们需要备份文件。
cp -rf wordpress.conf wordpress.conf.bak
接下来,打开 “wordpress.conf” 文件,并添加以下行。
location /sub {
index index.html index.php;
root /var/www/sub/;
try_files $uri $uri/ /sub/index.php?u=$uri&$args;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
}
当通过https://sample.com/sub访问时,根目录将被覆盖为/var/www/sub/。这将导致在/var/www/sub/sub目录中的index.php被加载,显示子网站的首页。
此外,尽管将别名设置为/var/www/sub/wordpress也能够访问主页,但由于无法通过try_files访问发布页面,因此我们采用了上述方法。
这是将子网站的wordpress根目录设为/var/www/sub/sub/而不是/var/www/sub/wordpress的原因。
顺便说一下,母网站的设置如下所示。
location / {
index index.php;
root /var/www/wordpress;
try_files $uri $uri/ /index.php?u=$uri&$args;
}
另外,通过在服务器指令中添加以下行可以防止数据迁移过程中的导入中断:
该代码允许一次上传最多1024MB的数据。
client_max_body_size 1024M;
创建数据库和数据库用户
当nginx的配置完成后,登录MySQL并创建新的数据库和数据库用户。
create database wordpress_sub;
create user 'dbuser_sub'@'localhost' identified by '********';
grant all on wordpress_sub.* to 'dbuser_sub'@'localhost';
「wordpress_sub」是新数据库的名字,“dbuser_sub”是新数据库用户的名字。此外,由于是nginx主机,所以使用“localhost”作为主机名。
然后,将数据库级别的权限授予创建的用户。
数据库的设置已经完成。
4. 安装WordPress
请进入新创建的sub目录并安装WordPress。
cd /var/www/sub/
wget http://ja.wordpress.org/wordpress-4.9.18-ja.tar.gz
这次我安装了版本为4.9.18的WordPress。
安装完成后,通过ls命令确认安装了名为”wordpress-4.9.18-ja.tar.gz”的文件,然后使用tar命令进行解压缩。
tar zxvf wordpress-4.9.18-ja.tar.gz
请使用ls命令确认WordPress目录已经创建,并在该目录下展开了WordPress所需的文件和文件夹。
将wordpress目录的名称更改
按照nginx.conf文件的内容,将wordpress目录的名称更改为”sub”。这样,wordpress的根目录将变为/var/www/sub/sub/。然后,递归地更改wordpress下的文件和目录的所有者和所有组,以便nginx可以读取它们。
mv wordpress sub
chown -R nginx.nginx sub
6. 将旧网站的URL进行301重定向
在「sub.conf」(旧网站的设置文件)的server指令中添加以下行。
return 301 https://sample.com/sub/$request_uri;
您可以通过添加$request_uri来将旧网站的页数重定向到新网站的相同页面。
例.
https://sub.sample.com/post01
|
| 301リダイレクト
↓
https://sample.com/sub/post01
如果在这一点上没有问题,我将重新加载nginx。
service nginx reload
7. 访问新网站的URL并进行WordPress的初始设置。
如果配置没有问题,访问新网站的URL”https://sample.com/sub”将显示WordPress的初始设置画面。
点击“さあ,始めましょう”,然后跳转到下一个画面。
在第三步中,輸入設定的資料庫信息。
接頭詞可以是「wp_」。
點擊「送出」,然後在下一個畫面上點擊「執行安裝」。
在网站上输入标题、用户名等信息。
输入完必要信息后,选择”安装WordPress”。
在安装成功后显示的画面上选择“登录”,然后跳转到登录界面。
用您在上面设置的用户名和密码登录即可完成。
8. 从旧网站迁移到新网站的数据转移。
从这里开始是从旧网站迁移数据的步骤。
由于旧网站已经进行了多站点化,所以我们使用了付费插件”All-in-One WP Migration Multisite Extension”。这个插件不仅可以导出整个站点网络,还可以导出单个站点。
请从导出选项卡中选择您要迁移的站点。
另外,在导出过程中,我们尽量通过高级选项,排除媒体库和插件等内容,以减小文件大小。
这些内容将在数据迁移后手动添加。
在新网站上安装”All-in-One WP Migration”(免费)插件,并导入从旧网站导出的数据。如果导入成功,请手动安装所需的插件并显示网站的首页。只要除了图片以外的部分都正常显示即可。
最终将图像迁移到另一个媒体库。
由于上传到媒体库的图像通常按月份保存在类似于/var/www/wordpress/wp-content/uploads/2021/01/sub1.png这样的路径中,因此使用cp命令按月份或年份的文件夹进行迁移是最快捷的方法。
另外,为了确认事先的演示环境(另一台服务器),我将uploads文件夹压缩并下载到本地,然后再次上传到演示环境和生产环境中,虽然这些步骤与主题无直接关系,但在此省略了步骤的说明。
当图片迁移完成并在浏览器重新加载后成功显示图片即可确认OK。
以上就是从旧网站迁移工作的结束。
尽管变成了相当长的一篇文章,但是感谢您一直阅读到最后。
请参考
-
- wordpreess用のDB作成
-
- https://www.javadrive.jp/wordpress/install/index1.html
-
- nginxのaliasについて
-
- https://qiita.com/oogaki_newmedia/items/749c855ad985c8258e66
-
- wordpressインストール
- https://webkaru.net/linux/wordpress-install-centos/