Php 在Zend框架上构建SaaS应用程序

Php 在Zend框架上构建SaaS应用程序,php,zend-framework,.htaccess,saas,Php,Zend Framework,.htaccess,Saas,我正在使用PHP上的Zend框架构建SaaS应用程序。以下是该项目的基本信息。基于SaaS模式的项目管理系统。当用户在网站上注册时,他们将获得如下格式的域名: user_name.pms.com 用户名-用户在项目管理系统(pms)上注册时选择的用户名 pms.com-是主要的SaaS服务器 目前,我们在服务器上提供子域。对于大公司来说,这看起来不太好,他们可能更喜欢拥有自己的域名,而不是这个默认域名。因此,可能有: user_name.pms.com[始终存在] user1.com[用户的自定

我正在使用PHP上的Zend框架构建SaaS应用程序。以下是该项目的基本信息。基于SaaS模式的项目管理系统。当用户在网站上注册时,他们将获得如下格式的域名:

user_name.pms.com

用户名-用户在项目管理系统(pms)上注册时选择的用户名

pms.com-是主要的SaaS服务器

目前,我们在服务器上提供子域。对于大公司来说,这看起来不太好,他们可能更喜欢拥有自己的域名,而不是这个默认域名。因此,可能有:

user_name.pms.com[始终存在]

user1.com[用户的自定义或独立域]此自定义域需要链接到默认用户url

完整的网站计划使用Zend框架开发

在Zend Framework上,我们对根文件夹具有以下HTAccess访问权限,以便其工作:

SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule .* index.php
以下是我的问题:

  • 我真的需要为所有用户在网站上注册后创建类似子域的配置文件url吗

  • 如果需要创建子域,PHP是否可以检查所选子域是否存在,并可以从脚本本身创建子域

  • 如果不需要子域,我们可以在Zend安装中使用HTAccess实现同样的目标吗

  • 您能否提供HT访问代码,该代码具有以下功能:

  • “user_name1.pms.com”需要重定向到“pms.com”

    “user_name1.pms.com/contact”需要重定向到“pms.com/contact”

    ie在子域(如URL)上的任何请求都必须重定向到主网站,格式为:pms.com,后跟查询字符串

    非常重要:

    重要事项1:

    当我说重定向到主网站时,我需要在地址栏上保留类似子域的URL,但请求将由主网站提供

    ie“user_name1.pms/contact”将由pms.com/contact提供,但在地址栏上我们仍然可以看到url“user_name1.pms/contact”

    重要事项2:

    每当我们使用HTAccess将请求重定向到主Zend服务器时,我是否可以识别在地址栏(即“site1.pms或site1.com”)上输入的实际url

    自定义域重定向的另一个问题:

    自定义域名(如“site1.com”或“site2.com”)需要重定向到:

    选项(a):“pms.com” 选项(b):“site1.pms.com

    在这里,我还需要保持地址栏上的url与用户输入的url相同

  • 以上哪种选择更好(a)或(b)

  • 域映射或CName是哪种技术起作用的?或者是任何其他使其起作用的技术


  • 有几种方法可以让你至少接近你想要的东西…但是要实现所有的方法,你需要获得更多的深度

    首先,你的问题是:

  • 如果您希望每个用户能够通过其自己的域与您的站点进行交互,您可能需要为每个用户实际设置一个完整的虚拟主机。如果您只想让他们的域重定向到您的域,则可以在他们的注册中心完成(如果他们能够成功地使用掩蔽,我一直认为这是有问题的,它可能完全可以工作,而不必这样做。如果你忽略自定义域的要求,那么你可以通过mod_rewrite完全管理子域,而不必实际设置它们
  • 对于您的站点来说,最好的架构可能是在用户注册时主动设置任何需要设置的内容。不要试图在用户首次尝试访问它时“及时”进行设置,因此这就像有人(比如)在usre.pms.com而不是user.pms.com中键入时显示错误一样简单
  • 您可以使用htaccess,或者为您的站点使用配置文件(这对性能来说更好,但严格来说只是为了“完成”目的,htaccess可以正常工作)
  • 非常重要的一点#1:这就是mod#u重写的工作原理。不用担心。 非常重要的一点#2:是的,只要您在mod#u重写规则中包含要传递的信息

    关于自定义域重定向的最后一个问题:

    这就是事情变得复杂的地方。如果apache没有充分意识到它正在寻找site1.com,你就无法从pms.com为site1.com提供服务(除非你通过屏蔽转发,在注册处无问题地工作).一般来说,如果你使用某种转发,那么你会希望他们转发到子域,通过mod_重写,一切都会很好。如果他们直接将域定向到你的服务器,那么CNAME记录可能是正确的选择,定向到子域,但你仍然需要了解虚拟主机以及如何正确设置它以使一切正常工作


    我认为,通过让客户拥有自己的自定义域名,你可能会获得比你意识到的更多的登录体验。你可以在一个下午或最多几天内学会如何使用子域。计算使用自定义域名的所有细节可能需要更长的时间。

    子域可以由你自己处理在CPanel中使用一些技巧。要从CPanel中添加vurtual子域,请执行以下步骤:

  • 选择“CPanel-子域”
  • 输入star并选择您的域名
  • 选择需要重定向到的目录
  • 并处理来自页面的重定向


    要使用Zend开发SaaS应用程序,请查看教程

    如果您使用Apache,您可以为您的域创建通配符别名,然后您可以使用php检查用户是否存在。这样您就可以知道数据库中是否存在用户了。您可以继续使用了。好的,谢谢。我会检查这个。谢谢您的回答。您解决了我的所有问题。现在轮到我了检查所有这些。我将很快更新我的发现。