共计 6057 个字符,预计需要花费 16 分钟才能阅读完成。
为了方便我们的客户寻找外贸方面的工具,我决定用专用的导航类主题建一个网站,可是我又不想用新的域名或者子域名建立,计划直接在 wordpress 的目录下创建一个 tools 的文件夹再上传 wordpress 源文件来搭建一个外贸导航类网站,也就是在一个 wordpress 网站中再嵌套一个网站。
通常来说这种子目录的方式是用来做多语言网站的。
我们在域名根目录下新建 zh、en、fr 等文件夹,在这些文件夹中上传 wordpress 源码程序,新建一个个网站,并使用不同的语言来翻译这些子目录网站,最终就是我们的多语言网站。
子目录以及子域名网站对 seo 影响
在一些 seo 的文章中总是会比较子域名和子目录两者对 seo 的影响,子域名相当于一个新网站,子目录网站还是保持在原有的主网站上继承权重,如果你想更深入的了解子域名和子目录网站对 seo 的影响可以参考 Hubspot《 Subdomain or Subdirectory? What They Are & How They Affect SEO》以及 Semrush 的《Subdomain vs. Subdirectory: Which Is Better for SEO?》。
Google 并没有明确的说过这两种方式对 seo 有多大的影响。谷歌在自己的文章中介绍过建立多语言网站的方式,也就是子目录和子域名两种方式,并且比较了两种方式搭建多语言网站对用户体验的优缺点。
要知道 Google 是以用户体验为核心的一家公司,我们要做的就是提高用户体验,真的不需要在意 seo,网站以足够多的优秀的内容吸引读者好过浪费时间做各种技术优化带来的成效。
答应我真的不要在考虑什么 SEO 了,现在已经是 SIO 的时代,大人时代变了。Google 会根据用户的搜索意图匹配相应的内容,即使你的网站中不出现关键词也没有关系,只要你的内容是符合用户搜索意图的,Google 会将他推送到用户面前的,你也会获得应有的流量。
我不是大学时候有一个娱乐的个人博客,从头到尾我没有做过任何的 SEO 优化,就只是安装了一个 Yoast 插件,让我的文章在搜索结果中变得好看一点,什么关键词、描述都不填、网站的 logo 在搜索引擎看来巨大无比,但是在真人看来是正常大小,但是文章内容确确实实的能帮助到读者,看完后能按照文章一步步操作得到最终的解决方案,有很多篇文章自然而然的排在了搜索前几的位置。
如果你真的需要从子目录和子域名网站中做出选择,那我建议你根据自己的业务大小来选择,如果只是一个小公司业务范围就那么几个,运营管理人员也很少,那就直接用子目录就可以了,但是你是一家大公司业务范围覆盖面广,有很多的不同业务,有足够多的运营管理人员,那么选择子域名更能提高自己的品牌影响力和充分发挥人员的作用。
搭建子目录网站的两种方式的优缺点
我以搭建一个外贸导航网站为例介绍子目录网站搭建,大家可以根据自身的需求和实力选择搭建方式。一种是在主网站目录下新建一个全新的网站,另一种是通过 wp 自带的多站点功能进行搭建。
优点 | 缺点 | |
方式一:创建子目录搭建全新网站 | 分布式管理,各个网站互不影响,如果你有足够多的员工,可以让每个员工管理相应的网站。 | 需要的人太多,不适合单人管理,数据库分散搬迁费事,多个数据库共享数据稍有困难 |
方式二:wp 多站点功能 | 一站式管理,所有网站使用同一个数据库,一人管理所有站点 | 搬迁网站使用 all in one migration 需要付费,但是可以通过备份网站及数据库搬迁,数据混乱,不适合新手。 |
方法一:创建子目录搭建全新网站
创建目录
登录进入宝塔后台,在文件中找到你的网站域名根目录,该目录下创建一个目录叫做 tools 的文件夹(目录)
下载并解压剪切 WordPress 源码
进入 tools 文件夹中,使用宝塔的远程下载功能(该功能将直接从官网下载到服务器上,不需要我们先下载到自己电脑上再上传到服务器上),直接下载 wordpress 的源码,根据服务器位置以及自身需要选择下载地址。
wordpress 源码下载链接
下载完成后点击解压,并进入解压后的文件夹中选择所有文件并剪切,粘贴到 tools 目录下。
剪贴所有文件
粘贴至此
之前下载的源码和空的 wordpress 文件夹就可以删除了。
创建新的数据库(如果你想后面实现用户注册的数据互通直接忽略这步)
由于我不想把嵌套的这个工具站的数据库和原始站的数据库混到一起,所以我选择新建一个数据库。当然你的网站数据不多用一个数据库也可以,这样的好处是你可以让两个网站共享数据库中。
在宝塔的数据库中点击添加数据库并填写数据库名用户名密码即可(设置的尽量复杂一些)。
访问该目录进行 wordpress 安装
对我来说就是通过浏览器访问 https://neijuli.cn/tools/wp-admin , 大家可以根据自己的网站不同域名访问。接下来就是 wordpress 的安装步骤了,如果你不会安装 wordpress 可以参考《WordPress 基础入门系列【3】wordpress 安装》。
这一步中有个很关键的点就是数据库的选择。
如果你选择将新的子目录网站放在主网站的数据库下,你将在后面实现两个用户数据共享,但是后续删除比较麻烦。反之,放在不同数据库中,删除网站数据库可以直接删除
安装完成后访问 https://neijuli.cn/tools/wp-admin 即可进行后台的访问,细心的朋友一定会发现链接的变化。
小插曲:登录密码忘记了该如何解决
我在进行演示的时候登录密码给忘记了,顺手写了一篇《WordPress 忘记密码的多种情况解决方案》
解决一些用户登录数据库的问题实现用户数据互通及权限问题
这时候一定有朋友问了,我既然用了两个不同的数据库,两个不同的网站,虽然一个是另一个的子目录网站,但是用户在注册的时候在子网站上注册,又想在主网站上登录,是不是又需要注册一遍。
多网站多数据库(还未解决)
这个问题问得好,对于多网站多数据库来说确实是这样的。两个数据库对应不同的储存数据的空间,如果想让用户在注册的时候共享数据库,让子目录网站使用主网站的数据库,用户只能重新注册,可以思考一下亚马逊的各个站点以及 vultr 的根据用户登录 ip 不同选择对应的地区数据库储存用户数据。
多网站单一数据库多用户共享数据库的数据表
如果我们一开始两个站用的是一个数据库,就是用的我们主网站数据库,那么我们只需对子目录网站中的 wp-config 文件进行一点小小的修改即可让子目录网站访问主网站的数据表了,这样就实现了用户数据共享。
如果你使用过安全插件修改过前缀需要按照你修改后的前缀来对代码做相应改动。
以主站为 wp_,子目录网站为 test_ 为例
在子目录网站的 wp-config.php 文件中加入主网站数据库代码。wp_users 和 wp_usermeta 中的 wp 是主网站数据库前缀。
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
保存后即可实现用户数据互通,使用主站用户登录子目录。
除此之外还未解决 cookie 问题,还不能无缝切换。
我们打开主站的 wp-config.php 文件将其中几行密令,复制粘贴到子目录网站的 wp-config.php 文件中,将子目录网站原先的这几行代码按 ctrl+/ 注销掉
最后在主站和子目录网站的 wp-config.php 文件中同时加入下列代码
define('COOKIEPATH', '/');
define('COOKIE_DOMAIN', '你的域名');
define('SECRET_SALT', '自己自定义一串字符或者将注销掉的粘贴到这里');
define('ADMIN_COOKIE_PATH', '/');
define('SITECOOKIEPATH', '/');
define('COOKIEHASH', md5('这里同样自己自定义一串字符串尽量复杂点,做好安全防护'));
进行完上述步骤之后你的用户登录状态就可以从主站无缝切换到子目录网站了,不管从主站还是子目录网站登录都会在另一个站上显示登录状态。
不过还是有一个小问题,用主站的用户名和密码登录子网站发现没有管理员的权限,即使是创建新用户并转换用户权限也会在子站上显示权限不足无法访问子目录网站后台,那么我们需要对数据库进行操作,将子目录网站用户的权限那一条数据复制到主网站数据库表中,目前网上所有抄来抄去的资料都会让你进入数据库后台,用数据库插入命令插入一条数据。
其实没必要再登录一次数据库,我们可以通过 phpMyAdmin 进行数据库的操作。
登录 phpMyAdmin
如果需要登录的话用户名为 root,密码可以在宝塔的数据库中的 root 密码处找到。
找到子目录网站的 test_usermeta 数据表
找到下面这条数据就是前缀_capabilities
点击编辑,将这里面的数据一条条复制出来
再找到主网站的 wp_usermeta 数据表,同样是这一条
点击复制,将保存的子目录两条数据粘贴到里面,拉到最下面,点击执行即可完成数据插入。
这时回到网站进行测试,发现主网站 id 为 1 的用户已经可以无缝管理子目录网站后台了
为了避免每个用户都需要插入一条数据,我们在主站的主题或者子主题中 function.php 文件中加入以下代码
add_action('user_register', 'dup_capabilities');
add_action('profile_update', 'dup_capabilities');
function dup_capabilities($user_id){
//array 中填写所有数据库表的前缀,wp_是主站数据库前缀,test_是子目录网站前缀
$prefixs = array('wp_','test_');
global $table_prefix;
$cap_val = get_user_meta($user_id, $table_prefix.'capabilities',true);
if(!empty( $cap_val) ) {foreach( $prefixs as $prefix){if( $prefix != $table_prefix)
update_user_meta($user_id, $prefix.'capabilities', $cap_val);
}
}
为子目录网站添加伪静态
由于我用的是 nginx,不修改会导致有些页面 404 跳转错误。我在宝塔自带的 wordpress 伪静态的基础上进行了一些增添。
# 加入了下面的代码
location /tools/ {try_files $uri $uri/ /tools/index.php?q=$uri&$args;}
这样我们再访问子目录网站的某些页面时候就不会自动跳转到 404 页面了。
如何删除子目录网站
当然是怎么安装怎么删除呗,具体操作如下。
删除子目录
我们用的是 tools 文件夹存放整个子目录网站的数据,所以直接删除整个 tools 文件夹即可。
删除数据库
删除数据库的时候需要注意了,小白尽量不要自己操作,即使要操作也要先备份。
如果你像我一样使用的独立数据库,那么直接删除数据库即可。
如果你的子目录网站使用的是主网站的数据库,删除前记得先备份数据库,小心误删主站数据。
再进入 phpMyAdmin 选中子目录网站的数据表,也就是选择特定前缀的表进行删除。
点击你的数据库,根据前缀筛选出需要删除的表,全选删除即可。
方式二:wp 多站点 Multisite 功能创建子目录网站
关于多站点 Multisite 功能的开启我之前在《 如何开启 WordPress 多站点 Multisite 模式》中有些到过开启的方式,不过有朋友会发现那个开启的是子域名而不是子目录。
这是因为 wordpress 的多站点 Multisite 功能只有对于新站的时候才有同时开启子目录、子域名的选项,其实老站也可以开启子目录模式。
在 wp-config.php 文件中添加代码
// 首先还是在 wp-config.php 文件中加入以下代码,意思就是开启多站点模式
define('WP_ALLOW_MULTISITE', true);
进入 wordpress 后台找到需要填写的代码
再通过 wordpress 的 工具 -> 站点网络配置,进入设置,将下列代码放在 wp-config.php 文件的 /* That’s all, stop editing! Happy publishing. */ 这句注释之前
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'neijuli.cn');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
解释 SUBDOMAIN_INSTALL 的 true 和 false
解释一下 define(‘SUBDOMAIN_INSTALL’, false); 的 false 代表安装子目录网站,如果是 true 的话就是安装子域名网站。
自己再添加新站点的时候就能看到效果。
这种多站点的搭建子目录网站的方式我是不太推荐,一开始还需要禁用所有插件比较麻烦,而且对于一些小白来说搬迁网站经常会使用 All-in-One WP Migration 这个插件,这个插件对于多站点模式网站的搬迁是需要收费的,如果你没有足够的预算,最好还是别使用这种方式搭建网站,但如果你多少对网站搬迁有所了解的话就可以无视这些插件,用你喜欢的方式搭建网站。
接下来还可以做什么?
除了搭建子目录网站以外,还可以用来搭建多语言网站,每种语言都是一个独立的网站,谷歌的文档《管理多区域网站和多语言网站》中有提到我们的网站可以以多语言展示给用户提高搜索的体验,这里面会用到 hreflang 语句,多语言网站的搭建,我会在后期写一篇这样的内容,记得关注我们。
我们写的内容一般都是先在官网发布,如果想了解更多内容可以关注我们。我们的文章一般必应搜索引擎收录比较快,谷歌相对来说慢点,在网上搜的时候只有使用微软的必应搜索引擎才能优先找到。
你的工作,由 AI 赋能!🔥
还在为文案、脚本卡壳、做视频、写代码、设计图片灵感枯竭而烦恼吗?🤯
板板 AI,你的工作好帮手!
一键生成 各种文案、脚本、图片、视频、代码、报告,轻松应对各种工作 / 营销需求!
现在注册体验,即可获得:
- 🎁 30 积分基础模型余额
- 🎁 3 积分高级模型余额
- 🎁 3 积分绘画余额
还不快来试试?
点击链接,开启你的 AI 创作之旅!>>>https://www.banbanai.cn
板板 AI,让你的工作效果发挥无限可能! 🚀