2

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

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

这让我困惑了一段时间,我自己无法弄清楚,任何帮助将不胜感激。

[编辑]:好的等等!恐怕我复制了一份。检查此线程:使用 .htaccess (PHP) 即时创建子域

4

3 回答 3

1

基本上你需要两个部分:

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

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

根据您使用的框架/服务器软件,这应该很容易。

HTH 亚历克斯

于 2009-09-26T11:56:07.080 回答
1

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

它可能是几种技术的组合。

第一层可能是 DNS 级别的通配符 DNS 记录,以便可以使用任何子域。

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

于 2009-09-26T12:02:12.043 回答
1

我可以在 pastebin.com 上告诉我我是如何做到的

  • 通配符 DNS 使 *.pastebin.com 转到单个 IP
  • 默认情况下,如果 Apache 无法为给定域找到匹配的 vhost,则第一个定义的 vhost 会选择它(还有其他方法可以实现这一点,这正是我所做的)。
  • 所以我确保 pastebin 站点是第一个虚拟主机,然后软件会看到请求的主机名并相应地对其进行操作以进行自我配置
于 2009-09-26T12:14:22.197 回答