【问题标题】:Subdomain for each user每个用户的子域
【发布时间】:2011-10-14 00:28:20
【问题描述】:

我拥有一个网站,它为每个注册用户提供如下专用空间: www.mywebpage.com/user1 www.mywebpage.com/user2 www.mywebpage.com/user3 在这个路径中,用户有他的迷你网站。

我想给我的用户的不是我域中的路径,而是像这样的二级域: user1.mywebpage.com user2.mywebpage.com user3.mywebpage.com

很多网站都这样做,但我不知道如何获得它!

  1. 我是否应该在我的 dns 记录中为每个用户注册一个 CNAME?我怎么能用 PHP 实现这一点?我认为不可能用人工编写的脚本来配置 godaddy。

  2. 我可以注册一个别名 CNAME,它将每个二级域指向我的顶级域,然后在我的顶级域中检查检索用户的 url 的第一个令牌:但现在我无法将他重定向到新页面(这是他的子站点的索引)或者我丢失了 web url userx.mywebpage.com。

我该如何处理?我将不胜感激有关为实现我的目标而遵循的正确道路的任何提示。

【问题讨论】:

    标签: php dns


    【解决方案1】:

    您希望看到的功能通常称为通配符 sudomain(通常博客网站都有此功能)。

    通常您会创建一个 * 的 CNAME 记录来表示通配符子域。相反,使用 Godaddy 创建一个名为 * 的 A 记录并将 IP 设置为您的服务器。我们过去已经完成了我们的 ASP.net 网站(不确定是否仍然可以与 GoDaddy 一起使用,但请尝试一下)。

    我对 PHP 知之甚少,我可以建议在您的 httpd.conf 或 apache.conf 文件中添加一些重定向(URL 重写)配置。

    请检查这个 http://kbeezie.com/view/wildcard-subdomains-php/

    在此之后,您可以编写自己的逻辑。您需要做的就是从子域名中的 db 中找到您的用户并呈现页面。

    【讨论】:

      【解决方案2】:

      您不必为要达到的目标设置 dns 条目。根据您对网站的控制程度,如果您使用 Apache,您可以轻松地为您的子域设置虚拟主机(请参阅 http://content.websitegear.com/article/subdomain_setup.htm

      【讨论】:

      • 但是要在用户注册后自动执行此操作,我需要在我的 php 注册脚本中编辑我的 httpd.conf 并重新启动 apache!对吗?
      【解决方案3】:
      1. 创建通配符 A 记录 (*.mywebpage.com) 指向您服务器的 IP。

      2. ServerName *.mywebpage.com 创建一个 Apache 虚拟主机,将所有请求指向同一个文档根目录。您的脚本查看主机名以了解它是哪个用户的站点。您不需要重定向到用户的子域之外。如果您的脚本看到子域是“www”,那是您显示主网站而不是用户内容的特殊情况。

      【讨论】:

      • 但是要在用户注册后自动执行此操作,我需要在我的 php 注册脚本中编辑我的 httpd.conf 并重新启动 apache!对吗?
      • @hysoka44 否,因为脚本将确定 URL 是否有效,而不是 Apache。无需重新启动 Apache,因为您已将该逻辑移至 PHP。
      • 您所做的是使用 .htaccess 将整个 url 发送到您的 index.php,然后在 index 中您可以使用字符串操作将 url 分成几部分,并且可以。弄清楚用户是否是真实的,并且 b.确定要显示的页面。
      • 这里没有涉及到.htaccess目录特定的配置,不想用也不需要使用前端控制器模式。它只是虚拟主机中的通配符服务器名称;对所有子域的所有请求(包括那些尚不存在的请求)都发送到同一个文档根目录。
      猜你喜欢
      • 2012-09-06
      • 2011-08-03
      • 2014-01-03
      • 2010-12-20
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多