我有这样的配置,/etc/apache2/sites-enabled/ 中有一个文件 z500.trunk(它是 sites-available 中文件的符号链接):
<VirtualHost 127.0.2.1:80>
DocumentRoot "/home/kuba/projects/z500/trunk/www"
ServerName z500.trunk
Alias /FilesZ500 "/home/kuba/projects/z500/files"
Alias /css-cache "/home/kuba/projects/z500/trunk/tmp/css"
Alias /js-cache "/home/kuba/projects/z500/trunk/tmp/js"
</VirtualHost>
在 /etc/hosts 中:
127.0.2.1 z500.trunk
但当我使用浏览器访问该网站时(http://z500.trunk/),我得到的是正常的默认页面,而不是虚拟页面。
它在 13.04 中运行正常,这里出了什么问题?
答案1
Ubuntu 13.10 现在使用 Apache 2.4,它带来的一些变化可能会对您产生影响:
VirtualHost 的默认位置位于extra/httpd-vhosts.conf
,但此文件名不是强制性的。
如果您确实选择采用其他文件命名方案,则它们需要以 结尾,这.conf
与之前的规则不同。
我会检查你的 httpd.conf 并确保你的 vhosts 有一个 Include。
Include etc/apache24/extra/httpd-vhosts.conf
顺便提一下,Apache 2.4 允许在配置中使用变量。这在配置大量虚拟主机时非常有用。
以下示例显然不适用于您的名称或目录结构。我只是为了传播信息而提出这一点。我喜欢这个功能,希望更多人采用它。
<VirtualHost 127.0.2.1:80>
Define SN z500.trunk
DocumentRoot "/home/kuba/${SN}/www"
ServerName ${SN}
Alias /FilesZ500 "/home/kuba/${SN}/files"
Alias /css-cache "/home/kuba/${SN}/tmp/css"
Alias /js-cache "/home/kuba/${SN}/tmp/js"
</VirtualHost>
答案2
正如@DavicHoude所说,该文件需要有.conf
扩展名并且需要AllowOverride All
目录,因为.htaccess 不起作用(我收到了 403 个错误):
<VirtualHost 127.0.2.1:80>
DocumentRoot "/home/kuba/projects/z500/trunk/www"
ServerName z500.trunk
<Directory /home/kuba/projects/z500/trunk/www>
Options +Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Alias /FilesZ500 "/home/kuba/projects/z500/files"
Alias /css-cache "/home/kuba/projects/z500/trunk/tmp/css"
Alias /js-cache "/home/kuba/projects/z500/trunk/tmp/js"
</VirtualHost>