O servidor web Apache atende intermitentemente 403: “Índice do diretório proibido pela diretiva Options” e 304

4

Nós configuramos um web site com SSI para arquivos .html no Apache / 2.2.19 no CentOS 5.5 Linux. Funciona bem, mas ocasionalmente obtém 403 para a página raiz (index.html servido como um índice de diretório). Nenhum sistema de arquivos muda quando a página funciona, não funciona e depois funciona novamente.

Quando não funciona, é como se o Apache tivesse decidido que o arquivo index.html não existe, por isso, tenta exibir uma listagem de diretórios, mas isso é intencionalmente negado pela nossa configuração.

O log de erros específico do Apache virtualhost contém entradas como:

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

O log de erros gerais do Apache não contém nada.

O log de acesso específico do Apache virtualhost contém entradas como:

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)"

Distribuição geral:

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

A configuração do Apache parece lke:

<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>
    
por Duncan Harris 23.08.2011 / 14:07

2 respostas

4

Como este é um site virtual, também temos que levar em conta as configurações no nível httpd.conf ... Você tem opções Multiviews definidas em algum lugar? O SSI mais a negociação de idiomas pode levar a que ele tente servir versões alternativas do seu index.html que não existem. E então, a mesma coisa pode levar a que ele não consiga encontrar o ErrorDocument que ele quer e lhe dará resultados ainda mais estranhos.

Existem reescritas de nível inferior?

antigo A linha de log que você incluiu é um navegador de celular. Você tem outro manuseio do Apache que lida com navegadores da web para celular? Você está fazendo alguma reconfiguração que corresponda a HTTP_USER_AGENT e envie a solicitação em outro lugar?

    
por 06.09.2011 / 17:38
0

Parece que você provavelmente só precisa adicionar a opção "Indexes" em suas declarações de diretório especificamente / main / directory.

    
por 25.08.2011 / 01:14