Apache 2子域名?

Lew*_*uce 1 apache

我一直在寻找有关如何做到的文章,但我找到了任何详细而直接的指示.我知道有很多与此有关的信息,但也许我只是不寻找合适的东西.

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

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

Jak*_*uld 5

你在找NameVirtualHost.我一直都在使用它,效果很好!

目前尚不清楚您使用的操作系统,但通常您需要先激活NameVirtualHost所需的端口.我假设您将使用端口80,因此在Apache配置中找到此行并设置如下:

NameVirtualHost *:80
Run Code Online (Sandbox Code Playgroud)

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

Listen 80
Run Code Online (Sandbox Code Playgroud)

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

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

  DocumentRoot /var/www/blog.domain.com

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

关键是ServerName和通配符VirtualHost.这基本上说,"好吧,我们正在NameVirtualHost端口80 上使用,这个配置是服务器名称blog.domain.com所以我将关注此配置中的所有选项并仅应用它们blog.domain.com.而DocumentRoot应该是我在这个配置指示."

编辑:根据下面的原始海报评论添加其他建议.

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

sudo nano /etc/apache2/sites-available/blog.domain.com.conf
Run Code Online (Sandbox Code Playgroud)

并将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
Run Code Online (Sandbox Code Playgroud)

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

sudo nano /etc/apache2/ports.conf
Run Code Online (Sandbox Code Playgroud)

您应该看到两行如下:

NameVirtualHost *:80
Listen 80
Run Code Online (Sandbox Code Playgroud)

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

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

<?php
echo $_SERVER['SERVER_NAME'];
?>
Run Code Online (Sandbox Code Playgroud)

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