如何为SAAS应用程序提供自定义子域名

14

如何为客户提供类似于Basecamp/SAAS应用程序的子域名?

例如,我的网站URL是http://www.example.com,当用户注册时,我想要为他们提供像http://company.example.com这样的URL,它应该从网站的/app目录加载文件/内容。

以后,我希望他们通过CNAME选择自己的域名/子域名,以便他们可以拥有像http://clients.mywebsite.com这样的URL。

我想要在纯PHP和.htaccess中实现此功能,并且一切都是自动进行的。

我希望保持URL结构不变..,即http://company.example.com/loginhttp://company.example.com/accountshttp://company.example.com/files/style.css,尽管这些文件位于/app目录中,我希望可以像这样访问它们。

我可以处理所有的PHP函数,但需要.htaccess代码方面的帮助以及如何设置CNAME。

1个回答

12

请确保将以下内容包含在域的区域文件中,以便 DNS 解析所有子域:

*.example.com. 14400 IN A HereBeIP

接下来,需要配置 Web 服务器以识别所有传入的请求。对于 Apache,您需要将以下内容添加到 VirtualHost:

ServerAlias *.example.com

就这样了。唯一剩下的就是代码中的逻辑,你需要检查主机名来确定请求是否发送到example.com或foo.example.com。

更新并提供更多细节。

因此,假设你的文件在/path/to/files/app中,你需要像这样配置虚拟主机:

<VirtualHost>
    SeverName example.com
    ServerAlias *.example.com
    DocumentRoot /path/to/files/app
    # plus what else is needed
</VirtualHost>

这样所有请求都将解析到/app目录。要进行测试,请应用上述DNS配置,或者将您要测试的域名添加到您的hosts文件中,在Linux上是/etc/hosts,在Windows上是c:\Windows\System32\drivers\etc\hosts


我该如何使用.HTACCESS实现这个功能,我的意思是每当发送请求(http://company.example.com),php将相应地显示页面,但我想保持URL结构不变。 - Dhruv Kumar Jha
简而言之,仅通过 .HTACCESS 无法实现。 - user557846
正如Dagon所说,你不能用.htaccess来完成这个任务。确保应用上述设置,剩下的就是Apache配置指向相同的结构。 - David Kuridža
如果您使用的是共享主机账户,那么您可能没有什么运气了,最好选择一个专用服务器。 - user557846
目前我正在开发服务器上使用它,稍后我会使用专用服务器。我想知道的是,当访问/打开子域时,如何获取/app目录中的文件。 - Dhruv Kumar Jha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接