当您在用户注册时自动创建子域时,它是创建新网站还是提供网站外观?

时间:2010-09-07 15:37:55

标签: php mysql .htaccess username user-accounts

我想知道在注册时创建的子域名是否会成为网站,或者他们是否只是假设他们的网站类似于example.com/username?

我正在尝试创建像user.domain.com这样的东西,并且真的找不到有用的东西吗?有没有办法让我可以为客户自定义帐户?

我需要它们像独立网站一样,以便我可以根据客户要求定制它们,那么最好的方法是什么呢?

4 个答案:

答案 0 :(得分:4)

子域通常映射到Web服务器上的特定路径。例如,Apache在httpd.conf中指定了这些路径,它们被称为VirtualHost。示例可能如下所示:

<VirtualHost *:80>
ServerName subdomain.domain.org
DocumentRoot "apache2/htdocs/domain/"
</VirtualHost>

此条目将Uri subdomain.domain.org映射到路径apache2/htdocs/domain/。现在,您可以修改或显示该路径中的页面,它不会与其他站点发生冲突。

答案 1 :(得分:2)

答案非常具体到您注册的位置。域,子域和托管帐户之间没有内在联系 - 您可以将example.com托管在某处,如果您愿意,可以将subdomain.example.com托管在完全不同的地方。这完全取决于您的主机,设置以及您/他们如何设置DNS。

您可以通过拥有两个站点来轻松完成此任务,一个用于example.com,一个用于* .example.com,后者将文档根目录放在名称的第一部分。在Apache中,这就像

一样简单
VirtualDocumentRoot /path/to/site/subdomains/%1

就浏览器而言,每个名称代表一个不同的站点,如果正确设置了cookie,站点之间几乎没有泄漏。唯一的问题是FTP访问,如果你决定授予它 - 每个用户都必须设置为将他们的子目录作为他们的家庭目录,理想情况下chroot或其他东西,所以他们不能去看看其他人的东西。显然,这需要与您的网络主机进行一些合作。 (至少,为了使用VirtualDocumentRoot,他们需要运行mod_vhost_alias。还有其他涉及mod_rewrite的方法,但是你做的任何方式都会遇到与FTP访问相同的问题。)

答案 2 :(得分:2)

您的DNS记录需要*.domain.com的通配符,这样其他人才能知道jack.domain.com会导致有效位置。

完成后,您的.htaccess将需要知道如何处理*.domain.com次请求。有关这方面的更多信息,请访问htaccess subdomain redirect rules

它的要点是有人去jack.domain.com你的服务器看到了这个,然后说,好吧我们传递jack作为查询字符串的一部分,所以每个页面都可以看到我们正在{ {1}}。然后在您的脚本中,您只需使用该信息将其提取并显示jack的数据。

有许多不同的方法可以设置,因此很难说如何根据您的需求进行定制。但希望这足以让你开始。请记住,如果您在localhost上进行测试,则localhost jack文件不允许使用通配符DNS名称,因此,为了进行测试,您必须手动将每个子域添加到该主机文件以进行测试。

答案 3 :(得分:0)

其他人已回答了你问题的要点,但我确实想触及你所谓的网站“错觉”。

有一些不同的方法可以将域,子域或目录中的给定应用程序从静态文件提供给处理每个请求的单个文件,无论请求的路径或域是什么。没有任何方法或多或少“真实”。我称之为“幻觉”的唯一方法是使用框架掩盖在另一个网站后面的网站,这通常是一个非常糟糕的想法。 (尝试在点击时不会更改URL的网站上添加书签。)