我有一个问题搞清楚在Centos6服务器上的Apache2虚拟主机的正确configuration。 我安装了一个安装了apache2(httpd)的干净的Centos6安装,默认情况下定义了/ var / www /图标 , / var / www / errors和/ var / www / cgi-bin内容文件夹它们是在/etc/httpd/conf/httpd.conf中configuration的。
我configuration了2个域a.com和b.com ,为此我创build了文档文件夹/var/www/a.com和/var/www/b.com ,并在/etc/httpd/conf/httpd.conf我configuration了NameVirtualHost
NameVirtualHost *:80
并为a.com和b.com添加了相应的虚拟主机
<VirtualHost *:80> ServerAdmin [email protected] ServerName a.com ServerAlias www.a.com DocumentRoot /var/www/a.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/a.com"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
域名a.com和b.com都工作正常,我可以访问他们有没有www子域,但我很困惑我该如何处理默认的httpdconfiguration和默认内容文件夹? 即使使用普通IP地址(请求指向a.com虚拟主机)调用服务器,我似乎也无法访问/ var / www / html中的默认站点。 我也尝试将服务器主机名configuration为c.com并设置
ServerName c.com:80
但是,即使对c.com的请求也被redirect到a.com虚拟主机。
我不需要由apache创build的默认内容文件夹,所以我应该删除/ var / www / html , / var / www /图标 , / var / www / errors和/ var / www / cgi-bin文件夹和相应的定义就在/etc/httpd/conf/httpd.conf上
DocumentRoot "/var/www/html" <Directory "/var/www/html" ... /> Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons" ... /> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin" ... /> Alias /error/ "/var/www/error/" <Directory "/var/www/error" ... />
或者在同一台服务器上configuration虚拟主机时,如何configuration和访问默认主机?
当您使用基于名称的虚拟主机时,第一个<VirtualHost>将成为默认主机,它也将响应与其他虚拟主机的ServerName或ServerAlias指令中声明的域名不匹配的所有请求。
从手册 :
主人走开
如果将虚拟主机添加到现有的Web服务器 ,则还必须为现有主机创build一个<VirtualHost>块。 此虚拟主机中包含的ServerName和DocumentRoot应与全局ServerName和DocumentRoot相同。 首先在configuration文件中列出这个虚拟主机,以便它作为默认主机。