使用反向代理安装 WordPress 博客以加强搜索引擎优化

代理, 搜索引擎优化, 2021 年 10 月 25 日5 分钟阅读

您是否遇到过这样的情况:您需要在现有的公司网站上建立一个博客,而该网站并不是在 WordPress 上运行的?我相信大多数人都遇到过这种情况。在本文中,您将发现一种在不影响搜索引擎优化的情况下实现这一目标的方法。在深入了解之前,让我们先来探讨一下

您是否遇到过这样的情况:您需要在现有的公司网站上建立一个博客,而该网站并不是在 WordPress 上运行的?我相信你们中的大多数人都遇到过这种情况。

在本文中,您将发现一种在不影响搜索引擎优化的情况下实现这一目标的方法。

在深入探讨之前,让我们先来看看组织和机构是如何利用博客与主网站分开托管的。

在什么情况下需要在主网站之外建立独立博客?

许多大型企业都有复杂的 IT 系统,因此内部部门很难跳出内部系统的范围。例如,内容营销部门希望创建一个博客来启发受众。然而,目前的安排使得创建博客(如 WordPress 托管)成为不可能。

另一方面,企业可能会使用".NET 框架 "来开发网络应用程序,而其他公司则对使用开源框架犹豫不决。

当您需要在上述任何一种情况下托管博客时,您别无选择,只能考虑使用其他服务器托管博客。 因此,这台服务器就在你托管网站的服务器之外。让我们来看看其中的一些选择及其影响,好吗?

单独托管 WordPress 博客有哪些选择?

在子域上托管

例如,如果您的主网站的网址是 www.myorganization.com,那么过去技术能力最强的专业人士会倾向于通过购买主域的子域来安装 WordPress 博客。举例来说,在这种情况下,它将位于 ourblog.myoraginzation.com。

在过去,这种解决方案是完美的。但现在,当你的目标是为自己的博客带来可观的流量时,你还需要考虑搜索引擎优化(SEO)方面的问题。我们将在下一节对此进行探讨。

将博客安装在子域上对搜索引擎优化的影响

何时使用子域

网站所有者购买子域的主要原因是为您的品牌提供基于不同产品的独立内容。虽然也可能有其他原因,例如为移动和流量驱动建立独立网站,但根本原因在于内容和在多个利基基础上扩展品牌。

例如,维基百科根据不同语言设置了子域来分隔内容,如fr.wikipedia.com或 es.wikipedia.com

另一个例子是美国国家公共广播电台(NPR),这是一个广受欢迎的广播网络,他们 100% 专注于新闻和内容。不过,他们也有一个子域https://shop.npr.org/,主要专注于商品销售。 

因此,在上述情况下,使用子域是合理的。但如果是博客呢?

博客是子域还是独立文件夹?

搜索引擎会将子域视为独立的网站。这意味着搜索引擎必须分别抓取和索引每个子域。此外,主域的反向链接不会与子域共享。因此,为子域建立页面排名的难度几乎与主域相同。

因此,在有必要的情况下,使用子域会有所帮助。因此,博客的理想选择是将博客作为主网站的子目录。

然而,正如我在前面提到的那样,在您的主要网站运行的情况下,当您在一个不支持 WordPress 托管的不同平台上对其进行热处理时,您如何才能做到这一点呢?

这正是反向代理的作用,我们将在下一节为您介绍反向代理的概况。

什么是反向代理和正向代理?

如果你知道正向代理的作用,就会更容易理解反向代理的概念。

前向代理(Forward Proxy)--前向代理会将局域网(LAN)中所有节点发出的所有请求转发到该请求所属的相关服务器。目标服务器不知道请求的来源,并通过前向代理向发起请求的客户端发送响应。如下图所示


反向代理:相反,反向代理位于服务器之前,当客户端发起请求时,它会向正确的服务器发送请求。然后,当适当的服务器返回响应时,反向代理将响应返回给客户端设备。在客户端设备看来,反向代理服务器处理了所有请求。当网络应用程序的同一部分在多个不同服务器上进行缩减时,反向代理是理想的选择。

要了解有关反向代理和正向代理的更多信息,请参阅本文

WordPress 场景中的反向代理

同样,您也可以使用反向代理将流量导向您托管 WordPress 博客的服务器。另一方面,反向代理会将非博客流量导向相关服务器。我知道说起来容易做起来难。让我们举例说明。 


假设如下图所示,您的网站 https://www.somedomain.com 托管在不支持 WordPress 的网络服务器上。但是,您的内容营销团队非常渴望拥有一个博客。因此,考虑到上面提到的所有搜索引擎优化事实,您的网站开发团队别无选择,只能将博客安装在 "blog "目录下。因此,博客的 URL 将显示为 https://www.somedoamin.com/blog。

由于主网站不支持 WordPress,以下是网站开发团队必须遵循的步骤:

  1. 请联系 somedomain.com 的管理员,了解他们是否支持反向代理。
  2. 如果他们这样做了,您可以要求他们在其服务器上配置反向代理,并提供您托管 WordPress 博客的详细信息。
  3. 在完成上述步骤的同时,您还需要找到一个像Kinsta这样的主机服务器来运行您的 WordPress 博客。现在,这个博客将拥有一个独立的 IP 地址,因为它的托管服务器与您的主网站的托管服务器不同。
  4. 您需要为该博客设置一个 URL,该 URL 应为https://www.somedomain.com/blog.Since,该域的根域中不能有文件夹;最好的办法是让子域https://blog.somedomain.com指向这台新服务器。
  5. 然后,您可以配置反向代理,这样如果请求以https://www.somedomain.com/blog 的形式出现,此类请求就会指向子域https://blog.somedomain.com.This 步骤要求您在 somedomain.com 的根目录下创建一个名为 "blog "的文件夹。然后,将以下文件命名为 "web.config",并添加以下代码。

创建 web.config 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
  <rewrite>
   <rules>
    <rule name="blog.somedomain.com" stopProcessing="true">
     <match url=".*" />
     <conditions>
      <add input="{HTTP_HOST}" pattern="^blog.somedomain.com$" />
      <add input="{PATH_INFO}" pattern="^/blog/" negate="true" />
     </conditions>
     <action type="Rewrite" url="\blog\{R:0}" />
    </rule>
   </rules>
  </rewrite>
 </system.webServer>
</configuration>

在下面两行中,"blog.somedomain.com "应替换为博客所在的子域:

 <rule name="blog.somedomain.com" stopProcessing="true">
<add input="{HTTP_HOST}" pattern="^blog.somedomain.com$" />

然后在这两行中,如果你给 "blog "文件夹起了不同的名字,可以替换它:

<add input="{PATH_INFO}" pattern="^/blog/" negate="true" />
<action type="Rewrite" url="\blog\{R:0}" />

在最后一步,虽然我们使用了子域,但这不会影响搜索引擎优化,因为流量会产生到主网站的博客文件夹。因此,重定向到子域是一个内部过程,不会影响搜索引擎优化。

如何在 Apache 服务器中创建反向代理?

上述情况是指运行不支持 PHP 的服务器。但是,如果您遇到的情况是,您的主要网站运行的是 PHP 或 Drupal,但您想在同一域内为博客建立一个不同的网站,则需要按照以下步骤配置反向代理。

但在此之前,您需要确保有两个网站正在运行。一个是https://www.somedomain.com,另一个是安装了 WordPress 的子域 https://blog.somedomain.com。

首先,需要通过 SSH 打开Apache 服务器的终端。然后使用此命令启用 Apache 的代理模块:

sudo a2enmod proxy proxy_http ssl

在大多数情况下,该命令会重启 Apache,以重新加载上面定义的新指令:

接下来就是你期待已久的步骤了。那就是编辑服务器的虚拟主机文件,创建反向代理。

<VirtualHost *>
DocumentRoot /var/www/app/public
SSLProxyEngine On ProxyRequests off
ProxyPass /blog http://blog.somedomain.com
ProxyPassReverse /blog http://blog.somedomain.com
</VirtualHost>

这里有两个要点需要注意:

  1. 代理通行证: 将为上述路径创建反向代理
  2. ProxyPassReverse(反向代理): 通过此反向代理传送的 HTTP 响应标头将被拦截并重写,以匹配 Apache 服务器。

现在,接下来的步骤是针对 WordPress 的,这在上述两种情况下都很典型。

更新 WordPress

然后,您需要前往安装WordPress的服务器,更新wp-config.php文件。这是因为您通常不会将WordPress配置为在反向代理上运行。

因此,您必须更新 wp-config.php 文件,如下所示:

$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/","/blog/wp-admin/",$_SERVER['REQUEST_URI']);

然后在同一文件中更新以下变量:

同时,您可以更新数据库配置值,如下所示:

UPDATE wp_options SET option_value = 'https://www.somedomain.com/blog' WHERE option_name IN('siteurl', 'home');

下一步是修改 .htacess 文件,以便正确重写 URL:

成为

RewriteRule ./blog/index.php [L]

完成上述所有步骤后,您需要确保帖子和类别链接能正常工作。为此,您需要使用旧的子域 URL 登录,如下所示:

blog.somedomain.com/wp-login.php

那么,如果您从主仪表板导航到 "设置",然后单击 "常规 "选项卡,将会有所帮助。

在网站地址(URL)字段中更新如下:

这样做之后,如果您仍对 URL 是否能正确工作存有疑问,那么您可以安装 "更好的搜索替换 "插件。它会在必要时更新数据库中的所有记录。

此外,您还必须谨慎更新 canonicals 和 robot.txt。 

After doing so, if you’re still in doubt if the URLs would work correctly, then you can install the “Better Search Replace” plugin. It would update all the records on your database where necessary.

此外,您还必须谨慎更新 canonicals 和 robot.txt。

结论

现在您可能已经发现,WordPress 是高度可定制的。这是因为您可以使用 WordPress 单独托管网站的博客部分,而不触及其他部分。正如您在本博客中所看到的,网站的其他部分可能托管在不支持 WordPress 的不同平台上。

因此,将博客连接到网站的其他部分可能是一项具有挑战性的任务。不过,您可以通过使用反向代理来克服这些问题。

请继续关注我们的后续文章。