当我们可以通过httpd.conf创建子域时,为什么要为子域创建DNS记录?

时间:2012-06-08 06:17:14

标签: apache .htaccess

我想在我的网站中使用用户名作为user1.domain.com等子域实施博客 我已经阅读过一堆文章,这些文章在DNS中创建了如下所示的A记录:

*.domain.com A 127.0.0.1 ;OR you site ip address

然后使用.htaccess将请求从子域重定向到服务器中的文件夹。

但我发现另一种方法据说只是修改你的httpd.conf如下:

<VirtualHost *:80>
        DocumentRoot /abs/path/to/webroot
        ServerName   domainname.com
        ServerAlias *.domainname.com
        <Directory /abs/path/to/webroot>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

然后通过$_SERVER['HTTP_HOST']检索子域名。 问题是,当我们在ServerAlias *.domainname.com中做httpd.conf之类的简单事情时,为什么有人会使用htaccess并对apache施加压力并创建DNS记录? 我提前感谢您的意见。

2 个答案:

答案 0 :(得分:2)

您添加了ServerAlias,但是为了让您的计算机找到user1.domain.comuser2.domain.com应解析为127.0.0.1,您需要更新HOSTS文件或DNS Table

您编写的配置适用于Apache Server,用于在用户请求域时处理重定向。因此,基本上,您需要Dynamic HOSTS文件或将*.domain.com解析为127.0.0.1服务器的服务。

希望这会有所帮助。 :)

答案 1 :(得分:2)

您需要设置通配符DNS记录并在httpd.conf中配置服务器别名,以便托管任意子域。他们配置完全不同的东西。

添加通配符DNS记录允许客户端确定子域的IP地址。使用关于user1.domain.com的通配符DNS记录将解析为127.0.0.1。如果您没有DNS记录,则user1.domain.com将不是有效名称,并且它将无法解析为IP地址。 DNS记录是允许客户端连接到您的服务器。

httpd.conf配置是Apache服务器的本地配置。它不会影响客户。行ServerAlias *.domainname.com将配置Apache以告诉它处理任意子域。客户端不会受此设置的直接影响。