我创建了2个虚拟主机http:// web1.com:2107指向“/ var / www / web1”文件夹,第二个http:// web2.com:2107指向“/ var / www / web2”。 web2中的所有子域都工作正常,但是对于web1.com:2107,我只能看到主页。当我尝试从web1打开任何子域名时,如http:// games.web1.com:2107,它指向web2的主页,即/ var / www / web2 / directory
配置有什么问题吗?
下面是我正在使用的主机的代码
<VirtualHost *:80>
ServerName web2.com
ServerAdmin myeow@web2.com
ServerAlias http://www.web2.com
DocumentRoot /var/www/web2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/web2>
Options Indexes FollowSymLinks Multiviews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/web2/error80.log
CustomLog /var/www/web2/access80.log Combined
</VirtualHost>
<VirtualHost *:2107>
ServerName web2.com
ServerAdmin myeow@web2.com
ServerAlias http://www.web2.com
DocumentRoot /var/www/web2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/web2>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/web2/error.log
CustomLog /var/www/web2/access80.log Combined
LogLevel warn
CustomLog /var/log/apache2/web2.com_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
=============================================== ====================
NameVirtualHost *:2107
<VirtualHost *:2107>
ServerName web1.com
ServerAlias http://web1.com
DocumentRoot /var/www/web1
<Directory /var/www/web1/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ErrorLog /var/www/web1/error.log
CustomLog /var/www/web1/access.log Combined
</VirtualHost>
答案 0 :(得分:5)
当您有多个VirtualHost时,其中一个是默认的VirtualHost。 它是包含VirtualHost定义的文件的第一个字母顺序。
删除VirtualHost时。如果在Hosts文件或DNS记录中仍有条目,则在Apache服务器上执行查询时,如果找不到正确的VirtualHost(ServerName或ServerAlias),则会使用默认值来处理答案。 / p>
当您添加新的VirtualHost时,如果您在ServerName或ServerAlias中出错,您也将拥有默认的VH。
更新
既然问题已经完成,我可以看到你没有以正确的方式使用ServerAlias。您的所有子域都应该在ServerAlias指令中列出,而不是http:// 所以你应该:
ServerName web1.com
ServerAlias www.web1.com
ServerAlias games.web1.com
你可以试试* .web1.com。 否则,当您使用未列出的名称时,将使用默认的vhost(此处定义vhost web2.com,因此它是此端口上的默认值)
答案 1 :(得分:0)
更改Apache Conf后,必须重新启动该服务。不确定这是不是问题,但检查确实没有伤害;)
答案 2 :(得分:0)
嗯我把问题解决了一半,在HOSTS文件中留下了一些条目,这样该页面仍然可以删除主机名输入。现在半个问题仍然存在。现在我创建了一个主机条目并指向差异位置,但仍指向旧位置:(
答案 3 :(得分:0)
对于Cloudflare用户,他们遇到了一些SSL问题和错误的目录:
将加密中的SSL模式从Flexible
更改为Full
。
这帮助了我。