Apache Web 服务器间歇性地提供 403:“目录索引被选项指令禁止”和 304

Apache Web 服务器间歇性地提供 403:“目录索引被选项指令禁止”和 304

我们在 CentOS 5.5 Linux 上的 Apache/2.2.19 上为 .html 文件配置了一个带有 SSI 的网站。运行正常,但根页面(index.html 用作目录索引)偶尔会出现 403 错误。在页面运行、不运行和再次运行之间,文件系统没有发生变化。

当它不起作用时,就好像 Apache 认为 index.html 文件不存在,因此尝试提供目录列表,但我们的配置故意拒绝了这一点。

Apache 虚拟主机特定的错误日志包含如下条目:

[Tue Aug 09 03:10:47 2011] [error] [client 66.249.72.3] Directory index forbidden by Options directive: /main/directory/

Apache 常规错误日志不包含任何内容。

Apache 虚拟主机特定的访问日志包含如下条目:

66.249.72.3 - - [09/Aug/2011:03:10:47 +0100] "GET / HTTP/1.1" 403 230 "-" "SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)"

总体分布:

# fgrep 'GET / ' `ls -tr domain-access_log*` | cut -d ' ' -f 9 | sort | uniq -c
   1339 200
      1 206
     31 304
     29 403

Apache 配置如下所示:

<VirtualHost ip.address:80>
  ServerName domain.here

  DocumentRoot /main/directory
  ErrorLog logs/domain-error_log
  CustomLog logs/domain-access_log combined
  DirectoryIndex index.html

  AliasMatch ^/(robots\.txt|sitemap.*\.xml(?:\.gz)?)$ /other/directory/$1

  CacheEnable disk /
  CacheDisable /sitemap.xml.gz
  CacheDisable /robots.txt
  CacheIgnoreHeaders Set-Cookie
  CacheIgnoreNoLastMod On

  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript

  <Directory /main/directory>
    Options Includes
    AddOutputFilter INCLUDES .html
    Order allow,deny
    Allow from all
  </Directory>

  <Directory /other/directory>
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

答案1

由于这是一个虚拟站点,我们还必须考虑 httpd.conf 级别的设置... 您是否在任何地方设置了选项多视图? SSI 加上语言协商可能会导致它尝试提供不存在的 index.html 的替代版本。然后同样的事情可能会导致它无法找到所需的 ErrorDocument 并给您带来更奇怪的结果。

是否正在进行低级别的重写?

老的 您包含的日志行是手机浏览器。您是否有其他处理移动网络浏览器的 Apache 处理程序?您是否在执行任何与 HTTP_USER_AGENT 匹配的重写并将请求发送到其他地方?

答案2

看起来您可能只需要在目录声明中添加“索引”选项,特别是 /main/directory。

相关内容