9

当您注册 Blogger 或 WordPress 时,您将获得自己的子域,该子域可以立即运行。鉴于我有自己的 VPS/VDS/专用服务器,我怎样才能做到这一点?

4

2 回答 2

10

简而言之:

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

如何做到这一点取决于您使用什么技术。让我举几个例子:

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

bortzmeyer的补充(抱歉覆盖了您的编辑,存在编辑冲突):

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

 *   IN    A   198.51.100.3
于 2010-02-03T07:25:28.373 回答
2

对于那些对所有这些 A 和 CNAME 事物不熟悉的人来说,有一个非常简单的解决方案,并且可以与共享主机一起使用:

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

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

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

希望这可以帮助。

于 2012-12-02T20:24:48.317 回答