![允许 Apache 2.2 中特定 VirtualHost 的目录查看/遍历](https://linux22.com/image/578109/%E5%85%81%E8%AE%B8%20Apache%202.2%20%E4%B8%AD%E7%89%B9%E5%AE%9A%20VirtualHost%20%E7%9A%84%E7%9B%AE%E5%BD%95%E6%9F%A5%E7%9C%8B%2F%E9%81%8D%E5%8E%86.png)
我已经配置了以下虚拟主机:
<VirtualHost *:80>
DocumentRoot /var/www/myvhost
ServerName myv.host.com
ServerAlias myv.host.com
ErrorLog logs/myvhost-error_log
CustomLog logs/myvhost-access_log combined
ServerAdmin [email protected]
<Directory /var/www/myvhost>
AllowOverride All
Options +Indexes
</Directory>
</VirtualHost>
配置出现从工具的角度来看是正确的apachectl
。
但是,我无法获取该虚拟主机上的目录列表:
Forbidden
You don't have permission to access / on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
错误日志显示以下内容:
[Wed Mar 07 19:23:33 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/******
更新2
最近,以下内容出现在error.log中:
[Wed Mar 07 20:16:10 2012] [error] [client 192.152.243.233] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html
更新3
今天,以下人员将被踢出:
[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/<mydir>
[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html
[Thu Mar 08 14:05:57 2012] [error] [client 66.6.145.214] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
这是修改vhosts.conf
文件之后的结果:
<VirtualHost *:80>
DocumentRoot /var/www/<mydir>
ServerName myhost
ServerAlias myhost
ErrorLog logs/myhost-error_log
CustomLog logs/myhost-access_log combined
ServerAdmin admin@myhost
<Directory "/var/www/<mydir>">
Options All +Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
缺什么?
更新 4
全部根目录的子目录正确地列出目录 - 它是仅有的不能的根。
答案1
403 表示找到了资源。请检查 apache 是否对r-x
文档根目录及其上层的所有目录和r--
其中的文件具有某种级别的权限。
尝试将目录指令更改为
<Directory /var/www/myvhost>
AllowOverride All
Options +Indexes
Order allow,deny
Allow from all
</Directory>
答案2
我今天遇到了类似的问题,看到了类似上面显示的错误:
[Wed Oct 17 14:19:08 2012] [error] [client 123.66.66.22] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/mysite/
混合使用带有和不带有 +/- 的选项是有问题的,请注意Apache 文档中的选项:
将带有 + 或 - 的选项与不带有 + 或 - 的选项混合在一起不是有效语法,并且会在服务器启动时通过语法检查被拒绝并中止。
另外,有效使用不带 +/- 的指令的效果是删除该目录的所有其他先前设置的指令。
我使用了不带 + 的索引,并出现了上面复制的错误。
既然您说您没有使用任何 .htaccess 文件,为什么不将 Directory 指令更改为以下内容:
<Directory /var/www/myvhost>
AllowOverride None
Options +Indexes
Order allow,deny
Allow from all
</Directory>
答案3
我的解决方案(截至 2012 年 3 月 21 日)
- 将所有内容移动到子目录
- 在根目录中创建一个重定向
index.html
文件,重新加载到子目录
我仍然想知道为什么我不能仅仅遍历目录本身,但目前这是可行的。
答案4
在我的 CentOS 5/6/7 系统上,这个问题是由系统自带的默认 /etc/httpd/conf.d/welcome.conf 中的某种冲突引起的。注释掉 welcome.conf 的每一行并重新启动 Web 服务器,目录索引就会在 Web 根目录中可见。这似乎只是默认 Web 服务器配置中的一个错误,至少在 Red Hat/CentOS 系统上是这样的,但也可能在其他系统上也是如此。您的系统可能遇到过类似的问题。