【问题标题】:Host blog on different server?在不同的服务器上托管博客?
【发布时间】:2009-12-10 12:47:40
【问题描述】:

目前,我的公司博客与我们的主要 Web 应用程序位于同一台服务器上 - 如 example.com/blog

将博客移至其他服务器但仍允许用户通过example.com/blogblog.example.com 访问博客的最简单方法是什么?

【问题讨论】:

    标签: scaling blogs


    【解决方案1】:

    Issue 301 HTTP 重定向从 website.com/blog 到 blog.website.com

    具体取决于服务器。

    【讨论】:

    • 那么是否无法将 website.com/blog 重定向到新服务器?
    • 用户在输入 website.com/blog 后会在地址栏中看到什么? blog.website.com 或 website.com/blog?
    • @Anthony — 这就是您如何重定向到新服务器。
    • @Marek — 前者。最佳做法是为每个资源设置一个规范的 URI。
    【解决方案2】:

    我提供的答案是假设您使用 Apache 作为网络服务器,因为这是我所熟悉的。如果您使用的是 IIS,那么您可能会找到类似的解决方案,但我不能保证这一点。

    在过去,我遇到过类似的问题,客户在 www.mydomain.com 上托管他们的主要网站,但他们的博客由他们的营销人员在 blog.mydomain.com 上托管。出于 SEO 目的,将博客显示在 www.mydomain.com/blog 可能会有所帮助,尽管由于 DNS 协议的性质,这在物理上是不可能的。

    答案是使用名为 mod_proxy 的 Apache 模块,它允许您将 url /blog 映射到子域,这对最终用户是不可见的,更重要的是,搜索引擎是不可见的。 CodeHaus 在Configuring mod_proxy 上发表了一篇很好的文章(2016 年更新:linkleading nowhere),你可能想读一读。

    mod_proxy 非常复杂,可能需要一段时间才能正确设置,但它是迄今为止您描述的问题的最佳解决方案。

    【讨论】:

      【解决方案3】:

      您可以使用如下所示的简单 javascript 重定向代码来重定向用户。

      <script type="text/javascript">
      <!--
      window.location = "http://www.example.com/";
      //-->
      </script>
      

      【讨论】:

        【解决方案4】:

        您是在自己的数据中心托管这些服务器,还是购买托管?我们的公司网站托管在我们数据中心的多台服务器上。我们使用负载均衡器根据 URL 将流量路由到不同的服务器场。所以

        http://www.foo.com/assets/* 可能会路由到一个 Apache HTTP 服务器群,这些服务器只提供图像文件,而

        http://www.foo.com/apps/* 可能会路由到 JEE 应用程序服务器场,并且

        http://www.foo.com/services/* 可能会路由到专门用于托管 Web 服务和

        的服务器场

        http://www.foo.com/blog/* 可能会路由到只处理 WordPress 的服务器场。

        效果很好...如果您可以使用所有这些。如果您不这样做,请查看像 Matt 所说的 mod_proxy(我们在购买负载均衡器之前使用过)。

        【讨论】:

          【解决方案5】:

          blog.example.com

          blog.example.com 最简单,因为您可以简单地将其指向不同的 IP 地址。

          对于我正在从事的项目,这不是我想要的。

          example.com/blog

          我使用 Apache mod_proxy/blog 指向另一台服务器。 Apache 文档here

          效果很好:

          ProxyPass /blog http://blog.example.com/
          ProxyPassReverse /blog http://blog.example.com/
          

          但只有在代理模块正确加载后:

          LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
          LoadModule proxy_html_module /usr/lib/apache2/modules/mod_proxy_html.so
          LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
          

          注意事项

          • 由于 CloudFlare,我还必须使用不同的主机名托管博客,而不是 *.example.com
          • 我将Disallow: / 添加到我的blog.example.com/robots.txt。像这样的搜索引擎不会在两个位置开始索引。搜索引擎会直接忽略blog/robots.txt

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-10
            • 2012-06-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多