我不知道该怎么说,所以我将解释我的理想情况,希望您能向我解释如何实现它。

我正在使用Zend Framework创建一个应用程序,该应用程序将由DreamHost托管。该应用程序将托管在其自己的域(即example-app.com)上。基本上,用户应该能够注册并获得自己的域sampleuser.example-app.com或example-app.com/sampleuser,该域指向看起来像他们自己的应用程序实例,实际上是一个实例根据网址提供不同的内容。

最终,我希望我的用户能够创建他们自己的域(例如foobar.com),该域指向sampleuser.example-app.com,这样foobar.com的访问者就不会注意到该站点已真正投入使用来自example-app.com。

我不知道该怎么做。这个程序如何运作?我是否需要使用Apache做一些时髦的事情,还是可以通过DreamHost等第三方主机来完成?

更新:感谢您的建议!我决定忍无可忍并升级我的托管计划以使用通配符子域。它比我预期的便宜!我还发现了具有自己的API的域名经销商程序,例如opensrs.com。我认为使用这些API之一将是我的域注册问题的解决方案。

最佳答案

子域很容易。在托管环境中,大多数情况下,将apache配置为捕获主域下的所有子域调用。您只需要定义一个通配符DNS,因此* .example-app.com指向您服务器的IP。然后,您的网站应捕获对这些子域名的所有调用。

其他领域很难。需要在Apache中将它们配置为虚拟主机-请参阅http://httpd.apache.org/docs/1.3/vhosts/name-based.html-这意味着很难做到这一点,尤其是在托管环境中-除非您的主机为您提供一些API来做到这一点(简单而可行的方案是一个独特的IP分配给您的网站,然后您就可以使用Apache捕获所有内容-可以使用托管控制面板进行配置,也可以直接使用-然后将DNS服务器指向您的IP)。

然后,在将Apache配置为将所有必要的调用都指向您的网站之后,您可以通过以下方式区分每个子域的应用程序分区:

  • 从HTTP请求
  • 获取主机头
  • 有一个数据库表,其中包含您要提供的所有子域名
  • 查找该数据库表以确定实例或用户ID,并在以后用于过滤数据/或选择数据库(如果要使用“每个应用程序实例的数据库”模式)。

  • 祝你好运 :)

    关于zend-framework - 如何创建SaaS应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/999888/

    10-14 13:59
    查看更多