如何使用相同的域名制作三个应用程序

时间:2016-03-11 14:37:07

标签: dns wildcard subdomain virtual-hosts

HY,

我有3个应用程序,我必须让它们工作而不会互相干扰。我正在开发一个应用程序,客户端(注册后)可以有一个子域。为此我使用的是dns通配符

流程为:

  1. 我的公司网站是xxx.de(wp演示网站) - 第一个虚拟主机
  2. ...... ServerName xxx.de .....

    1. 用户在公司主网站上注册。注册后,在第二个应用程序(zend app - 具有子域的应用程序)上创建一个新的DB条目..基本上创建用户的配置文件并保存在DB hist profile子域中:client1.xxx.de,client2.xxx.de等。 ..
    2. .... ServerName * .xxx.de ....

      1. 在代码中的任何请求..我正在检查所请求的URL子域是否存在现有的DB条目。如果是,那么我正在显示他的个人资料子域...如果不是那么我; m重定向到主要的xxx.de网站。

      2. 在同一台服务器上,我还有一个使用相同域名的另一个应用程序的测试版本testingapp2.xxx.de

      3. .... ServerName testingapp2.xxx.de ....

        :)你已经猜到了......因为第二个应用程序现在第三个不能正常工作,因为在第二个应用程序中,如果有一个客户端匹配所请求的子域并重定向到主要公司网站。

        使所有3个或更多应用程序协同工作的解决方案是什么?

        由于

2 个答案:

答案 0 :(得分:0)

您可能只需要考虑应用网址规则的顺序。 如果您创建特殊情况子域列表,则应在检查用户ID之前检查这些子域。

检查您的用户ID(通配符)应该是默认选项。有点像这个伪代码:

if ((URL.startsWith(xxx.de) || URL.startsWith(www.xxx.de))
 serve wp_presentation_website 
else if (URL.startsWith(testingapp2.xxx.de)) // you can add more of these
 serve testingapp2
else serve client_profile // if this fails, it should still redirect home

我不完全确定你在哪里检查或者你正在使用什么语言,所以希望这适用。如果它类似于.htaccess列表,只需明确设置"特殊应用的路径"在设置通配符之前。

希望有所帮助!

答案 1 :(得分:0)

Hy,

不工作我认为解决方案是在服务器端配置apache vhosts但仍然没有弄清楚:(

<强>更新

一种解决方案是通过从以下位置重新命名vhost文件来强制apache读取第一个testingapp2.xxx.de虚拟主机:

testingapp2.xxx.de到0testingapp2.xxx.de

还有其他解决方案吗? ..这似乎只是一个黑客