1

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

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

我需要修改什么文件,我需要添加什么?

4

1 回答 1

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>

关键是ServerName和上的通配符VirtualHost。这基本上说明,“好的,我们NameVirtualHost在端口 80 上使用,此配置用于服务器名称blog.domain.com,因此我会注意此配置中的所有选项并将它们仅应用于blog.domain.com. DocumentRoot应该是我在这个配置中指出的。”</p >

编辑:根据下面的原始海报评论添加额外的建议。

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

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

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

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

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

好了,这都搞定了?因为看起来你有一个类似的 Apache2 配置布局,比如我工作过的 Ubuntu 12.04 服务器,所以进入这个文件看看是否NameVirtualHost设置:

sudo nano /etc/apache2/ports.conf

您应该看到如下两行:

NameVirtualHost *:80
Listen 80

好的,都准备好了吗?现在,重新启动 Apache,你应该设置好了!

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

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

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

于 2013-11-10T05:47:09.450 回答