在Zend Framework上构建SaaS应用程序

时间:2012-03-19 10:34:22

标签: php zend-framework .htaccess saas

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

user_name.pms.com

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

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

目前我们在服务器上提供子域。而对于大公司来说,它看起来不会很好,他们可能更愿意获得自己的域而不是默认域。所以可能有:

user_name.pms.com [始终存在]

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

完整的网站正计划使用Zend Framework进行开发。

在Zend Framework上,我们在根文件夹上关注HTAccess以进行工作,如下所示:

SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule .* index.php

以下是我的问题:

  1. 我是否真的需要为所有用户在网站上注册后创建类似于个人资料网址的子域名?

  2. 如果需要创建子域名,PHP可以检查所选子域是否存在,并且可以从脚本本身创建子域名吗?

  3. 如果不需要Sub Domain,我们可以在Zend安装中使用HTAccess实现相同的目标吗?

  4. 您能否提供执行以下操作的HT Access代码:

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

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

    即,像URL这样的子域上的任何请求必须重定向到主网站,格式为:pms.com,后跟查询字符串。

    非常重要:

    重要1:

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

    即“user_name1.pms / contact”将从pms.com/contact提供,但在地址栏上我们仍然会看到网址“user_name1.pms / contact”

    重要2:

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

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

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

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

    提供请求。在这里,我需要将地址栏上的URL保持为与用户输入的相同。

    1. 以上哪个选项更好(a)或(b)?

    2. 这项工作有哪些技术,域映射或CName?或任何其他技术使其发挥作用。

2 个答案:

答案 0 :(得分:1)

有几种方法可以让你至少接近你想要的东西......但是为了得到所有的方式,你需要更深入一点。

首先,您的问题:

  1. 可能需要为每个用户实际设置一个完整的虚拟主机,如果您打算让他们能够通过自己的域与您的网站进行互动。如果您只是希望他们将域名重定向到您的域名,可以在他们的注册商处完成(如果他们可以成功使用屏蔽,我总是发现问题,那么它可能完全没有这样做。如果您忽略了自定义域要求,然后您可以完全通过mod_rewrite管理子域,而无需实际设置它们。
  2. 您网站的最佳架构可能是主动设置用户注册时需要设置的任何内容。不要试图做到这一点"及时#34;当用户第一次尝试访问它时,它就像在usre.pms.com而不是user.pms.com中键入某人时显示错误一样简单。
  3. 你可以使用htaccess或你网站的配置文件(这对于性能更好,但严格来说只是#34;完成"目的,htaccess可以正常工作)。
  4. Google
  5. 非常重要的一点#1:这就是mod_rewrite的工作原理。别担心。 非常重要的一点#2:是的,只要您在mod_rewrite规则中包含要传递的信息

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

    这是事情变得复杂的地方。您无法通过pms.com为site1.com提供服务,而apache并未完全了解它正在寻找site1.com(除非您通过屏蔽转发而无需在注册商处工作)。一般来说,如果您使用某种转发,那么您希望它们转发到子域,并且完全通过mod_rewrite完成所有操作。如果他们直接在您的服务器上引导域名,那么CNAME记录可能是正确的选择,指向子域名,但您仍然需要了解虚拟主机以及如何正确设置它以使一切正常运行

    我认为通过让您的客户拥有自己的自定义域名,您可能会签署的内容超出您的意愿。您可以在下午或几天的时间内学习如何使用子域执行您想要的操作。确定使用自定义域名的所有细节可能需要更长的时间。

答案 1 :(得分:0)

可以使用CPanel中的某些技术处理子域。要从CPanel添加vurtual子域,请执行以下步骤:

  1. 选择“CPanel - 子域名”
  2. 输入星标并选择您的域名
  3. 选择您需要重定向的目录
  4. 并处理来自您网页的重定向。

    要使用Zend开发SaaS应用程序,请查看教程SaaS application development using PHP in Zend Framework