2010-02-03 96 views
9

注册Blogger或WordPress时,可以获得他们自己的子域,该子域立即生效。考虑到我拥有自己的VPS/VDS /专用服务器,我该如何实现这一目标?动态创建子域

+0

精彩的问题。我从来不知道这是可能的。 – 2017-04-01 10:35:21

回答

10

一言以蔽之:

  1. 创建DNS通配符域(即解决whatever.yourdomain.example返回你的IP),
  2. 在Web服务器中创建一个默认的虚拟主机和
  3. 检查应用程序中的URL。

如何做到这一点取决于您使用的是什么技术。让我给你一些例子:

  1. 如何建立一个通配符域in BINDin Windows Server DNS
  2. 要创建默认虚拟主机,只需在IIS中创建没有主机条目的Web服务器。在Apache中,配置文件中列出的第一个虚拟主机将成为默认主机。或者(b)你可以(a)根据域重写URL(例如,将子域转换为URL中的参数example for ASP.NET,Apache的例子mod_rewrite:Link1,Link2),或者(b)查看URL的主机部分(例如,ASP.NET中的Request.Url)。

加入由bortzmeyer(对不起,覆盖你的编辑,有编辑冲突):

的语法通配符,在平时的DNS区域文件格式(在RFC 1035中描述和实现在BIND,NSD也可以是其他人)是一个明星:

* IN A 198.51.100.3 
+0

+1感谢Heinzi。你能否详细说明并举例说明?非常感谢你的帮助! – Viet 2010-02-03 07:45:19

+1

@Viet:我已经延长了答案。如果您需要更多信息(例如关于某些特定技术),请询问。 – Heinzi 2010-02-03 08:05:54

+0

+1 Thanks Heinzi&bortzmeyer !!我可以有第3号为Apache 2.2澄清?非常感谢! – Viet 2010-02-03 08:09:16

2

对于那些,谁是外行到这一切的A和CNAME的东西,有一个非常简单的解决方案,并与虚拟主机的工作原理:

只要到您的cPanel,并添加子站点*

例如,如果您的域名被称为abc.com,您可以添加*选择/进入子目录作为根到此。保存时,它会将* .abc.com添加到您的子域表中,并将所有必需的A记录添加到您的区域文件中。

当您在浏览器中点击“任何”.abc.com时,服务器会将您置于指定位置(您提到的子目录)。

此外,要处理特定重定向的所有(任何)子域,您可以在该子目录中使用.htaccess来处理所有传入的子域请求。

一个工作htaccess的例子如下:

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(^.*)\.abc\.com 
RewriteRule (.*) handler.php?user=%1&%{QUERY_STRING} 

</IfModule> 

的handler.php(下面的代码)简单地显示与子域名欢迎消息并在URL所有查询字符串:

$user = $_REQUEST["user"]; 
print_r($_REQUEST); 
echo "Welcome {$user}"; 

希望这会有所帮助。

+0

+1谢谢Waquas。会尝试 :) – Viet 2012-12-03 00:41:09