【问题标题】:Manage multiple websites from one domain从一个域管理多个网站
【发布时间】:2010-10-12 17:50:35
【问题描述】:

我一直在寻找一个解决方案来完成以下系统。

我想在域A 上构建一个PHP 系统。在这个域A 上,我将允许管理员“创建”一个新网站。本网站仅包含文本片段,这些文本均存储在数据库中。这个,我知道怎么做。

但是,现在我想让浏览到 domainB 的访问者可以无形地重定向到例如 domainA.com/gateway.php?refdomain=domainB&page=xxx 或类似的东西。 我有一个模糊的想法,这应该由 .htaccess 完成,但我真的不知道如何以最简单的方式做到这一点。例如,如果 domainB 上有一些 POST 或 GET 请求,这应该会继续工作。此外,链接到 http://www.domainB.com/test.gif 的图像也应该从 www.domainA.com 不可见地加载。

我也知道有一些CMS系统(例如drupal)允许这个功能,所以有可能,我只是不知道怎么做。

感谢您提供任何可能为我指明正确方向的建议, 亲切的问候, 数字

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    您可以使用重定向标头..

    【讨论】:

      【解决方案2】:

      如果您使用 Drupal 之类的 CMS,您应该能够使用门户别名来分配这些内容。通过使用别名,您将能够分配不同的域以指向所创建的不同“站点”。

      【讨论】:

      • 我认为他试图避免使用 CMS。
      【解决方案3】:

      您是否在同一台机器上托管这两个?如果是这样,像 Apache 中的 VirtualHosts 这样的东西可以为你解决这个问题。

      mod_aliasmod_rewrite 也可能对你有用。

      【讨论】:

      • Apache VirtualHost 有类似 ProxyPass 和 ProxyPAssReverse 的东西,它们可以用来定义多个 VirtualHost,Apache 就像一个路由器。我确定它适用于静态域,不确定它是否适用于问题中提到的“创建”域
      • 好吧,无论如何你都不能“创建”一个域……你必须去注册它。作为注册的一部分,只需将其指向与 domainA 相同的 IP。如果您正确配置,VirtualHosts 将负责其余的工作。
      • 感谢您的建议,但是,我想如果我使用 Virtualhosts,我需要将文件复制到该网站的每个 ftp 帐户。我的目标是运行多个站点(域),并且只维护一个包含文件的帐户。所有数据都存储在数据库中,而不是文件中。
      【解决方案4】:

      基本上,您需要将所有域指向同一个目录(可能在vhosts 中使用通配符),然后设置urlrewrite;以 this question 为例,它可以在 .htaccess 文件或 Apache 配置中。

      所有进入的请求都将转到同一个 gateway.php,您可以使用 $_SERVER['REDIRECT_QUERY_STRING']$_SERVER['REQUEST_URI'] 和 $_SERVER['SERVER_NAME'] 提取当前域和请求。见$_SERVER。然后您就可以在 gateway.php 中发送正确的文件了。

      【讨论】:

      • 这不会改变浏览器地址栏中的URL,对用户是透明的。
      【解决方案5】:

      好的,这是一个非常简单的例子:

      RewriteCond %{HTTP_HOST} .
      RewriteCond %{HTTP_HOST} !^www\.domainA\.com
      RewriteRule (.*) http://www.domainA.com/gateway.php?realpath=$1 [L,QSA]
      

      然后您可以使用 parse_url 在网关脚本中解析“realpath”并采取适当的措施。

      如果你愿意的话,你可以用你的重写规则变得更复杂,为图像等设置单独的规则

      【讨论】:

      • 当你使用这些类型的重写规则时,它是否真的改变了用户浏览器中的地址?它会做 301 重定向吗?我认为那将是不受欢迎的。我希望它能在服务器内部处理所有这些。请指教,我很好奇。
      • 我认为这可行!我使用了类似的东西,但我没有意识到它可以跨域使用。我一定会试试这个。谢谢!
      • @Josh - 不,它不执行 301 重定向(好吧,如果您愿意,它可以,但正如所写的那样,它不会)。这严格来说是内部重定向。浏览器永远不会看到新的 URL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      相关资源
      最近更新 更多