16.3.4 符号链接和虚拟目录
在16.3.2节关于httpd.conf配置文件的介绍中提到了一个DocumentRoot的参数,该参数用于指定Web服务器发布文档的主目录。在默认情况下,用户通过http访问Web服务器所浏览到的所有资料都是存放于该目录之下。该参数只能设置一个目录作为参数值,那么是不是在Apache中就只能有一个目录存放文档文件呢?如果文档根目录空间不足,要把文件存放到其他的文件系统中去应该怎么办呢?对上述问题,Apache提供了两种解决 方法。
1.符号链接
关于符号链接在“8.3.3 链接文件”一节中已有详细的介绍,它的原理和使用在这里就不再过多叙述。下面演示一下它在Apache中的应用。假设现在的文档根目录为/usr/local/apache2/htdoc/,希望把/usr/share/doc目录映射成/doc/的访问路径。配置过程很简单,使用ln -s命令把/usr/share/doc链接到/usr/local/apache2/htdoc/doc下即可,运行结果如图16.17所示。建立符号链接后,直接使用浏览器访问http://demoserver/doc/进行测试,如图16.18所示。
图16.17 创建符号链接
图16.18 测试链接效果
虽然图16.18中访问的是网站根路径下的doc目录,但其实doc目录只是一个符号链接,它实际上是被链接到了/usr/share/doc目录下,所以用户访问通过浏览器访问时看到的都是/usr/share/doc目录下的内容。
2.虚拟目录
使用虚拟目录是另一种将根目录以外的内容加入到站点中的办法。下面举一个简单的使用虚拟目录的例子,把/var/log目录映射成网站根目录的/log下,具体过程如下所述。
(1)打开httpd.conf配置文件,在配置文件中添加如下内容:
#使用Alias参数设置虚拟目录和实际目录的对应关系
Alias /log "/var/log"
#使用Directory段设置/var/log目录的访问属性
<Directory "/var/log">
Options Indexes MultiViews
AllowOverride None
order allow,deny
Allow from all
</Directory>
(2)重新启动Apache服务。使用浏览器访问http://demoserver/log进行测试,如图16.19所示。现在,用户输入http://demoserver/log的链接,就会访问到/var/log目录下的内容。如果在配置文件中写成Alias /ftp/ “/var/ftp/pub”格式(多加了/),则访问的时候必须把/加上,否则不能访问,如图16.20所示。
图16.19 测试虚拟目录效果
图16.20 无法访问