如何为用户获取个性化子域并使其工作?

时间:2009-09-26 11:46:25

标签: rewrite subdomain

假设我在 example.com 上托管了一个网站,现在我希望我的每个注册用户都能获得一个个性化的子域名,例如Alice通常应该 alice.example.com 作为她的子域名。实际上 alice.example.com example.com/user/alice 获取数据。如何实现这种机制?我看到很多网站正在以这种方式运作。我不知道他们是怎么做到的。它是某种域服务器配置,Web服务器配置,.htaccess重写还是代码中的一些技巧?

如果它重定向,正如我的实验那样, example.com alice.example.com 将获得不同的IP地址,如果是这样,重写如何工作,因为我请求 alice.example.com ,网络浏览器将我带到一个完全不同的网站(IP地址)。

这让我困惑了一段时间,我只是无法弄清楚自己,任何帮助都会非常感激。

[编辑]:好的等待!我怕我复制了。检查此主题:Create subdomains on the fly with .htaccess (PHP)

3 个答案:

答案 0 :(得分:1)

基本上你需要两个部分:

1)您的Nameserver需要支持通配符。因此,您可以将* .mydomain.com映射到单个服务器。这将导致alice.mydomain.com和bob.mydomain.com全部转到同一台服务器。

2)然后,您的服务器软件应该能够将主机名(= alice.mydomain.com)映射到您的应用程序,并将“alice”部分作为参数传递。

根据您使用的框架/服务器软件,这应该非常简单。

HTH 亚历

答案 1 :(得分:1)

  

它是某种域服务器配置,Web服务器配置,.htaccess重写还是代码中的一些技巧?

这可能是几种技术的结合。

第一层可能是DNS级别的Wildcard DNS record,因此可以使用任何子域。

接下来,服务器配置或应用程序逻辑用于基于所访问的子域来分离内容。这可以是Apache Alias指令或应用程序代码中的重写规则或逻辑。

答案 2 :(得分:1)

我可以告诉我如何在pastebin.com上做到这一点

  • 通配符DNS使* .pastebin.com转到单个IP
  • 默认情况下,如果Apache无法为给定的域找到匹配的vhost,则第一个定义的vhost会将其选中(有其他方法可以实现此目的,这正是我所做的)。
  • 所以我确保pastebin站点是第一个vhost,然后软件然后看到所请求的主机名并相应地对其进行操作以配置自己