2017-06-05 56 views
0

我在CentOS 7机器上运行Apache服务器。我们在/var/www/html/site1下创建了一个新的Drupal站点 访问http://<server-ip>/site1产生了site1正确。如今,为了为新客户提供测试环境,我不得不为一个新的Drupal站点创建虚拟主机(我们称之为site2)。Apache上Drupal站点的意外虚拟主机行为

所以我创建了下面的虚拟主机规则:

<VirtualHost *:80> 
     ServerAdmin [email protected] 
     ServerName site2.dev 
     DocumentRoot /var/www/html/site2 
     <Directory /> 
       Options FollowSymLinks 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

之后,我创建的网站的文件夹/var/www/html/site2和安装的Drupal。访问http://site2.dev收益率site2正确。

问题是,如果我现在访问http://<server-ip>/site1,site2显示。

我找不出什么可能是问题。这两个网站的路径和数据库完全不同,所以在我看来,这两个网站不应该互相影响。

因为我今天从字面上定义了我的第一个虚拟主机,我想知道是否有人可以帮我解释这个问题。提前致谢!

+1

这是Apache中重定向你的请求到现场1或2个档,不管数据库或什么的。因此,如果你告诉apache将所有(*)http请求指向site2目录,则通常只能看到site2。 –

回答

2

好吧,我错过了你的问题,并认为你有2个域名。

你的站点1是否通过IP访问,没有子目录?在这种情况下: 更改DocumentRoot的指向到/ var/www/html等,然后这两个网站将IP/SITE1和IP/SITE2进行访问。

如果您是通过媒体链接网址IP/site1的访问site1的,那么你什么都没有改变,可能没有新的虚拟主机至极点才SITE2目录访问IP /站点2 ...。

+0

我不确定我是否明白_first first virtualhost_的含义。没有为_site1_定义虚拟主机,我只是通过IP访问它,例如“http:// 10.10.10.10/site1”。 – GigiSan

+0

那么你肯定有一个默认情况下在Apache的conf定义(查找httpd.conf文件)。如果您在这种情况下无法访问apache conf,则可以创建一个只指向第二个站点url而不指向*的虚拟主机。 –

+0

更正了我的答案,希望它对您有所帮助。 –

0

基于Laurent的答案,这是我最后使用的配置:

# So all IP only paths continue to work 
<VirtualHost *:80> 
     DocumentRoot /var/www/html/ 
     ServerName 10.10.10.10   # Server's IP 
     <Directory /var/www/html/> 
       Options FollowSymLinks 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

# So site2.dev points to its folder 
<VirtualHost *:80> 
     DocumentRoot /var/www/html/site2 
     ServerName site2.dev 
     <Directory /var/www/html/site2> 
       Options FollowSymLinks 
       AllowOverride All 
     </Directory> 
</VirtualHost>