我一直在寻找有关如何执行此操作的文章,但我找到了任何详细而直接的说明。我知道有很多与此相关的信息,但也许我只是没有在寻找正确的东西。
在我的域名的控制面板中,我添加blog.domain.com
了转到我的网络服务器的 IP 地址。但是,在 Apache 的配置中,我希望能够直接blog.domain.com
到某个文件夹。
我需要修改什么文件,我需要添加什么?
我一直在寻找有关如何执行此操作的文章,但我找到了任何详细而直接的说明。我知道有很多与此相关的信息,但也许我只是没有在寻找正确的东西。
在我的域名的控制面板中,我添加blog.domain.com
了转到我的网络服务器的 IP 地址。但是,在 Apache 的配置中,我希望能够直接blog.domain.com
到某个文件夹。
我需要修改什么文件,我需要添加什么?
您正在寻找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-available
to的符号链接,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