自定义域映射到Web应用程序

我们正在创build一个SAAS基础应用程序,每个公司都有自己的子域。 但是,如果公司想用我们的应用程序configuration另一个域,他们可以做到这一点。

例如,我是一家在申请www.saas.com上注册的公司,我得到了子域名company.saas.com,现在我想将我的company.com域名指向company.saas.com,那么我们如何才能做到这一点呢?

我知道这可以使用Cname来完成,但有没有办法dynamic更新CNAME?

这完全取决于您的应用程序如何执行主机名检测 。 例如,如果它运行在HTTPS上,则需要在Web服务器上添加一个虚拟主机。 我们可以推断,基于你目前使用subdomain.saas.example.com和软件是能够检测到,这应该是可能的。 您只需使用相同的方法来进行主机名识别,而不是使用当前的解决scheme。

在DNS级别上,您应该使用指向相同IP地址的Alogging 。 这是因为使用CNAMElogging只会导致company.saas.example.com IN A另一个DNS查找logging,并且不会导致检测到的主机名发生任何更改,因此您不会使用它的任何好处; 即防止configuration这种主机名检测方法,这不是一个快捷方式。

如果您希望使用CNAME (例如,如果*.saas.example.com的IP地址可能会在没有确认客户的情况下发生变化),则应该使用子域名build议,例如saas.example.net而不是example.net 。 这是因为使用CNAMElogging时,您不能在同一个主机名上使用任何其他logging。 随着域名本身,这意味着你失去了添加MXTXTNS等logging的能力。 这将阻止使用相同的域名的电子邮件等

您可以使用RewriteRule将请求redirect到特定的DocumentRoot,并且可以将规则的dynamic添加到.htaccess文件。

将虚拟主机添加到Apache的configuration文件会更好,但是每次更改后都必须重新启动Apache。

的.htaccess:

 RewriteEngine On RewriteCond %{HTTP_HOST} (clientone.saas.example.com) RewriteRule ^(.*)$ /clientonefolder/$1 [R=301,L] RewriteCond %{HTTP_HOST} (clienttwo.saas.example.com) RewriteRule ^(.*)$ /clienttwofolder/$1 [R=301,L]