Apache 2子域名?

时间:2013-11-10 05:39:48

标签: apache

我一直在寻找有关如何执行此操作的文章,但我找到了任何详细而直接的说明。我知道有很多与此有关的信息,但也许我不是在寻找合适的东西。

在我的域名控制面板中,我添加了blog.domain.com以转到我的网络服务器的IP地址。但是,在Apache的配置中,我希望能够将blog.domain.com定向到某个文件夹。

我需要修改哪个文件以及需要添加哪些文件?

1 个答案:

答案 0 :(得分:5)

您正在寻找NameVirtualHost。我一直都在使用它它很棒!

目前尚不清楚您使用的是哪种操作系统,但通常需要先为所需端口激活NameVirtualHost。我假设你将使用端口80,所以在你的Apache配置和放大器中找到这一行。如此设置:

NameVirtualHost *:80

确保您的Apache配置设置为列表到端口80.应该是这种情况,但在此处添加以供参考:

Listen 80

然后对于你的子域,这就是神奇发生的地方。同样,我只是在做基础知识,因此请根据您的服务器设置进行调整:

<VirtualHost *:80>
  ServerName blog.domain.com
  ServerAlias blog.domain.com

  DocumentRoot /var/www/blog.domain.com

</VirtualHost>

关键是ServerNameVirtualHost上的通配符。这基本上说明了,“好的,我们在端口80上使用NameVirtualHost,此配置用于服务器名称blog.domain.com,因此我将关注此配置中的所有选项&amp;仅将它们应用于blog.domain.comDocumentRoot应该是我在此配置中指出的内容。“

编辑:根据以下原始海报评论添加其他建议。

首先,不要以任何方式编辑/etc/apache2/sites-available/default。而是为您的新子域创建一个新的配置文件。这使得管理更容易。我假设您需要运行sudo并使用nano进行编辑以获取我的示例:

sudo nano /etc/apache2/sites-available/blog.domain.com.conf

并将我上面的VirtualHost内容添加到新的blog.domain.com.conf文件中。当然要确保你的VirtualHost指令符合你的要求;我的只是个例子。

现在,如果已经完成,您需要创建一个从sites-availablesites-enabled的符号链接,如下所示:

sudo ln -s /etc/apache2/sites-available/blog.domain.com.conf /etc/apache2/sites-enabled/blog.domain.com.conf

好的,这一切都完成了吗?由于您似乎有类似我已经使用过的Ubuntu 12.04服务器的Apache2配置布局,请进入此文件以查看是否设置了NameVirtualHost

sudo nano /etc/apache2/ports.conf

您应该看到两行如下:

NameVirtualHost *:80
Listen 80

好的,一切都准备好了?现在,重启Apache&amp;你应该被设定!

如果要测试,请在文档根目录中为包含该行的子域创建一个测试文件;我假设你可以使用PHP:

<?php
echo $_SERVER['SERVER_NAME'];
?>

如果一切正常,它应该回显为该目录设置的主机的子域:blog.domain.com