我们在Windows Server 2008 R2 VPS上运行4个Wordpress网络安装,使用Apache 2.2.17和PHP 5.3.10,由于某些原因,我们定期使用获取此(样本)错误:Apache:通过Options指令禁止的目录索引
错误日志
[Thu Feb 16 15:01:59 2012] [error] [client x.x.x.x] Directory index forbidden by Options directive: C:/_webserver/_www/wp/www/
访问日志
host x.x.x.x - - [17/Feb/2012:12:59:23 +0200] "GET/HTTP/1.1" 403 306 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; MATM)"
错误“目录索引被禁止”通常意味着一个目录试图访问,但没有文件(根据选项指令)被显示和目录列表被禁止。但是,这不是这种情况。错误是指文件夹C:/_webserver/_www/wp/www/
,它是该项目的webroot,并且始终有一个index.php
。此外,httpd.conf
设置为:DirectoryIndex index.html index.php
看到如何在Apache中发生错误,我认为这很可能是由PHP或Wordpress造成的。
困难的是我们不知道如何重现错误,所以我们很难测试它。
我们可以做些什么来找出问题所在?它可以与Apache的设置有任何关系(似乎是一个多余的问题)。它可以与Apache已经读取的文件有关吗?有什么方法可以获得有关此问题的更多信息?
我欢迎任何帮助来帮助我解决这个恶心的案件。
UPDATE
这些是我目前在使用
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule cache_module modules/mod_cache.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule alias_module modules/mod_alias.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule dir_module modules/mod_dir.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule php5_module "c:/_webserver/_server/php-5.3.10-Win32-VC9-x86/php5apache2_2.dll"
选项指示模块:
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
Order deny,allow
Allow from all
</Directory>
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
的httpd-vhosts.conf看起来是这样的:
NameVirtualHost *:80
<VirtualHost *:80>
<Directory "C:/_webserver/_www/sites/www">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Include "C:/_webserver/_www/sites/htaccess.conf"
DocumentRoot "C:/_webserver/_www/sites/www"
ServerName xxx
ServerAlias xxx
CustomLog logs/sites.access.log mycombined
ErrorLog logs/sites.error.log
</VirtualHost>
我有5个这样的虚拟主机设置,每个都有自己的错误和访问日志。这些项目不使用.htaccess
,但是这是通过性能配置静态设置的。
服务器运行在Windows,所以MPM设置是一点点有限的
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_winnt_module>
ThreadsPerChild 1750
MaxRequestsPerChild 0
</IfModule>
最后更新
好吧,我决定彻底关闭Apache的缓存,从那时起,没有更多的错误。不幸的是,本周我没有太多时间做适当的测试,但至少我知道问题出在哪里。而且,如果服务器不是太忙,现在暂时没有缓存。我可能会回来一段时间:-)
你可以提供一个在一般配置和VirtualHosts配置中设置的所有Options指令的示例吗? – regilero
我已更新我的问题。 – Richard