我有一个服务器上托pipe的两个域。 我在/etc/httpd/conf.d创build了两个文件: first.conf和second.conf 。 每个文件都有相同的内容:
NameVirtualHost * <VirtualHost *> ServerName first.example.com DocumentRoot /home/me/first </VirtualHost>
当它完成时,我有一个冲突。 只有第二个文件的作品。 所有请求都转到/home/me/second 。 不pipe我使用什么域名。 如何解决? 我究竟做错了什么?
PS。 有很多个人文件,每个域名一个,对我来说非常重要。 而且我应该能够轻松地删除其中的任何一个,而不会影响到其他人。 我不想触摸默认的Apacheconfiguration..我认为有可能做同样没有VirtualHost ,但一些其他的指令。 我只是不记得它的名字.. 🙁
将namevirtualhost放在另一个configuration文件中,如apache(2).conf或httpd.conf(取决于你的发行版)。 在debian / ubuntu上,正确的地方是apache2.conf的结尾。
您只需要在整个configuration中使用nameVirtualHost一次。
尝试删除second.conf中的NameVirtualHost
将nameVirutual主机移出站点configuration文件。 它属于服务器configuration(apache.conf或http.conf)。
只是为了警告你。 第一个网站将会得到虚拟主机不包含的任何请求。 这是您的默认服务器。 您可能需要configuration一个额外的站点来处理这种情况。
我很确定Include指令按字母顺序从conf.d目录中读取文件。 如果你能为文件命名规则来确保所需的顺序,你可以将NameVirtualHost *添加到一个单独的文件中:或许像'__NameVirtualHost.conf'之类的东西。 这将使您能够删除任何单独的VirtualHost文件,而不会影响其他人的需要。
你也可以调整你的文件生成来生成一个单独的文件,而不是多个文件(毕竟,它们可以连接在一起以实现等效的function)。 假设一个虚拟主机被删除,它被删除在源,并重新创build文件集?
你如何通过主机名访问服务器?
此外,您的文件显示first.example.com ,我假设第二个有second.example.com。 你能发表第二个文件的全部内容吗?