即时创建子域

时间:2010-02-03 07:23:33

标签: dns subdomain on-the-fly

当有人注册Blogger或WordPress时,可以立即获得自己的子域名。考虑到我有自己的VPS / VDS / Dedicated服务器,我怎样才能实现同样的目标?

2 个答案:

答案 0 :(得分:10)

简而言之:

  1. 在DNS中创建通配符域(即,解析whatever.yourdomain.example返回您的IP),
  2. 在您的网络服务器中创建默认虚拟主机
  3. 检查应用程序中的URL。
  4. 如何执行此操作取决于您使用的技术。让我举几个例子:

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

    4. Link2添加(抱歉覆盖您的编辑,存在编辑冲突):

      通配符的语法,采用通常的DNS区域文件格式(在RFC 1035中描述,在BIND,nsd中实现,可能是其他格式)是星号:

       *   IN    A   198.51.100.3
      

答案 1 :(得分:2)

对于那些是所有这些A和CNAME事物的外行人,有一个非常简单的解决方案,并与共享主机配合使用:

只需转到您的cpanel并添加带*

的子域名

例如,如果您的域名为abc.com,则可以添加*并选择/输入子目录作为其根目录。保存时,它会在您的子域表中添加* .abc.com,并将所有必要的A记录添加到您的zonefile中。

当您在浏览器中点击“任意”.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}";

希望这有帮助。