【问题标题】:1 domain.. 2 server and 2 applications1 个域.. 2 个服务器和 2 个应用程序
【发布时间】:2011-02-23 00:07:21
【问题描述】:

我在服务器一上有一个像 twitter.com 这样的网站,在服务器二上我有一个论坛,它的路径就像 domain.com/forum

在服务器一上,我想实现通配符 dns 并将主域放在上面。但是在服务器二上,我想保持论坛分开,我不能给子域forum.domain.com,因为它的所有链接都已经放在搜索引擎中并链接回domain.com/forum。

所以我想知道,如何将域和通配符 dns 放在服务器 1 上,并且仍然能够在服务器 2 上为 domain.com/forum 提供路径(作为子文件夹)。

有什么想法吗?

您认为 htaccess 可以完成这项工作吗?如果是,那么如何?

【问题讨论】:

  • 如果迁移到ServerFault,赏金会随之迁移吗?

标签: linux dns wildcard


【解决方案1】:

您可以使用 htaccess 和 mod_rewrite 以便 domain.com/forum 实际上显示来自 forum.domain.com 的页面。

可能是这样的:

Options +FollowSymLinks
RewriteEngine on
RewriteRule domain.com/forum/(.+) forum.domain.com/$1

【讨论】:

    【解决方案2】:

    简单 - 使用代理!如果你喜欢 apache,你会喜欢 apache mod_proxy 来满足你的目的。

    <VirtualHost *:80>
        ServerName  maindomain.com
        ServerAlias *.maindomain.com
    
        # insert document root and general settings for this domain here
        # ...
    
        ProxyPass /forum http://forumdomain.com
        ProxyPassReverse /forum http://forumdomain.com
        ProxyPassReverseCookieDomain forumdomain.com maindomain.com
    </VirtualHost>
    

    此配置使 apache 向您的内部域 (forumdomain.com) 发出 HTTP 请求,而无需通知用户浏览器内部位置。您可以通过 http://*.yourdomain.com/forum 访问您的论坛。论坛发送的 Cookie 和标头将被相应地重写,搜索引擎不会注意到您的后端服务器。

    您可以在http://httpd.apache.org/docs/2.2/mod/mod_proxy.html阅读更多信息

    如果您需要重写您的 html(href、src ...)中的引用,您可以在“mod_proxy_html”上搜索。

    这样的解决方案当然也可以与其他智能代理服务器(如 squid)一起构建。您可以使用它将任何内容从“后端服务器”映射到您的公共域。 确保路由正常或为您的内部域(forumdomain)设置一个主机条目,其互联网 IP 地址为 192.168 ...

    享受您的网站并提供反馈:)

    p.s.:“RewriteRule”指令可能会为您做同样的事情,但除非您指定“P”,否则客户端将看到(并执行)rdirect,强制它执行内部代理请求。如果可以的话,我更喜欢 mod_proxy,因为它更通用并且允许更多配置。

    【讨论】:

      【解决方案3】:

      如果您在服务器 1 上使用指向服务器 2 的代理,则会增加服务器 1 的负载,因为所有流量都将通过它进行路由。此外,如果服务器 1 出现故障,也没有人能够到达服务器 2。当然有可能,但是这些都是要考虑的。

      无论如何,我建议为服务器 2 设置一个 supdomain,例如 forum.domain.com,然后在服务器 1 上使用 htaccess 中的 mod_rewrite 设置从 domain.com/forum 到 forum.domain.com 的 301 重定向。使用该技术,您甚至可以将调用重定向到服务器 2 上相应页面的特定链接。搜索引擎将遵循 301 并最终更新索引。

      【讨论】:

        【解决方案4】:

        您可以使用 301 重定向来确保搜索引擎使用您的新网址更新其索引,如下所示:

        RewriteRule domain.com/forum/(.*) http://forum.domain.com/$1 [R=301,L]
        

        【讨论】:

          【解决方案5】:

          如果您有两台服务器,您别无选择,只能使用重定向(最好是 301 永久重定向)将用户从 domain.com/forum 移动到 forum.domain.com

          唯一的另一种方法是在这两个服务器前面放置一个反向代理,它读取 URL 并在内部将查询定向到正确的服务器,但那是一个额外的硬件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-10
            • 2016-01-19
            • 2014-02-21
            • 1970-01-01
            • 1970-01-01
            • 2019-06-30
            • 2023-03-27
            • 1970-01-01
            相关资源
            最近更新 更多