/var/www/vhost/servername/httpdocs/subdir/
apache(ubuntu 12.04 上的 2.2.22 版)vhost webroot的子目录是它自己的磁盘分区。相应地,也有/var/www/vhost/servername/httpdocs/subdir/lost+found
。在我的 apache 错误日志中,我发现/var/www/vhost/servername/httpdocs/subdir/lost+found/.htaccess
无法读取的错误,带有类似的引用/var/www/vhost/servername/httpdocs/subdir/foo/
(即当该目录的FancyIndexing
目录索引显示给用户时)。
[Fri Nov 28 09:14:19 2014] [crit] [client 10.0.0.1] (13)Permission denied: /var/www/vhost/servername/httpdocs/subdir/lost+found/.htaccess pcfg_openfile: 无法检查htaccess 文件,确保它是可读的,referer:
http://servername/subdir/foo/
我无法理解这一点。为什么 apache 会尝试阅读
/var/www/vhost/servername/httpdocs/subdir/lost+found/.htaccess
在那个场合?据我了解,它应该只有理由尝试阅读
/var/www/vhost/servername/httpdocs/subdir/foo/.htaccess
/var/www/vhost/servername/httpdocs/subdir/.htaccess
/var/www/vhost/servername/httpdocs/.htaccess
有趣的是,更深的子目录(例如 )不会出现相应的错误消息http://servername/subdir/foo/bar/baz/
。
是什么导致了这个错误(或者首先是读取尝试)?我怎样才能摆脱它?
Apache 会尝试
.htaccess
在每个目录中查找文件,但lost+found
通常root
只能读取,因此它甚至无法检查文件是否存在。一种解决方案是将磁盘挂载到其他地方,将数据移动到该挂载点的子目录中,然后将其符号链接或绑定挂载到该子目录中。这种方式,
lost+found
不在 Apache 搜索的目录树中。