为了方便我们的客户寻找外贸方面的工具,我决定用专用的导航类主题建一个网站,可是我又不想用新的域名或者子域名建立,计划直接在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的源码,根据服务器位置以及自身需要选择下载地址。

中文站链接https://cn.wordpress.org/latest-zh_CN.zip
英文站链接https://wordpress.org/latest.zip

下载完成后点击解压,并进入解压后的文件夹中选择所有文件并剪切,粘贴到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语句 ,多语言网站的搭建,我会在后期写一篇这样的内容,记得关注我哦。

关于作者:张东星

我是一位打工人 & 创业者,创立了内聚力网络这家公司。我在某世界500强公司打工,不满于现状,空闲时间创业,喜欢折腾wordpress,为外贸创业者提供wordpress的建站技术支持,我会为您解决wordpress、Avada以及服务器等的操作使用方面的相关问题。 工作时间:每日18:00后。

发表评论

12 − 2 =

联系我

社交媒体

近期文章

近期评论

分类

加入qq讨论群