我面临一个令我抓狂的配置问题......
基本上,我是为一位客户担任系统管理员,该客户使用一台服务器托管许多不同的网站,更具体地说:
服务器是:
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)" NAME="Debian GNU/Linux" VERSION_ID="7" VERSION="7 (wheezy)" ID=debian ANSI_COLOR="1;31" HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="http://bugs.debian.org/"
Linux坐标3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u6 x86_64 GNU/Linux
服务器版本:Apache/2.2.22 (Debian) 服务器建立时间:2015 年 8 月 18 日 09:50:52
现在,在此基础上,我在第三级配置了几个不同的网站,例如 abc.xyz.it、def.xyz.it、ghi.xyz.it 等等。一切都按预期进行,直到上周我被要求配置其中一个虚拟主机,以响应略有不同的 URL 上的不同外部查询,并将它们重定向到同一个DocumentRoot
。这似乎很简单,事实上,我已经设法允许 qqq.xyz.it(原始虚拟主机),以及 qqqk.xyz.it 和 www.qqqk.xyz.it 将预期的配置放入原始/etc/apache2/sites-available/qqq
文件中;然后a2dissite qqq
,,,,再次……service apache2 reload
a2ensite qqq
service apache2 reload
正如我所说,一切运行正常,没有问题。
但几天后,客户要求我还添加 www.qqq.xyz.it...
我的第一个想法是这很简单,所以我编辑了文件,qqq
也为这个实例添加了一个部分...好吧,尽管尝试了几次,我还是完全无法让它运行......在我看来,这与我为其他虚拟主机所做的没有什么不同,但根本没有成功。
qqq
我粘贴了文件的实际内容如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName qqq.xyz.it
DocumentRoot /var/www2/qqq
<Directory /var/www2/qqq>
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 None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dri-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog ${APACHE_LOG_DIR}/dri-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.qqq.xyz.it
DocumentRoot /var/www2/qqq
<Directory /var/www2/qqq>
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 None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dri-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog ${APACHE_LOG_DIR}/dri-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName qqqk.xyz.it
DocumentRoot /var/www2/qqq
<Directory /var/www2/qqq>
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 None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dri-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog ${APACHE_LOG_DIR}/dri-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.qqqk.xyz.it
DocumentRoot /var/www2/qqq
<Directory /var/www2/qqq>
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 None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dri-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel error
CustomLog ${APACHE_LOG_DIR}/dri-access.log combined
</VirtualHost>
有人猜过吗?我尝试过多次改变文件中四个部分的顺序,我尝试过ServerAlias
在文件中任何地方都不起作用的方法……我已经没有主意了,也许这是一件简单而愚蠢的事情,但就我尝试了这么久而言,也许我看不到它……
答案1
乍一看这是 2.2,因此您实际上在第一个定义的虚拟主机中接收所有请求,您需要在服务器配置上下文中添加此指令一次,以便正确解释您的虚拟主机:
NameVirtualHost *:80