Назад | Перейти на главную страницу

Веб-сервер Apache периодически обслуживает 403: «Индекс каталога запрещен директивой Options» и 304

Мы настроили веб-сайт с SSI для файлов .html на Apache / 2.2.19 на CentOS 5.5 Linux. Работает нормально, но иногда получает 403 для корневой страницы (index.html служит индексом каталога). Файловая система не меняется между тем, когда страница работает, не работает и затем снова работает.

Когда это не работает, это похоже на то, как будто 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>

Поскольку это виртуальный сайт, мы также должны принять во внимание настройки на уровне httpd.conf ... У вас где-нибудь установлены параметры Multiviews? Согласование языка SSI plus может привести к попытке обслуживания альтернативных версий вашего index.html, которые не существуют. И тогда то же самое может привести к тому, что он не сможет найти нужный ErrorDocument и даст вам еще более странные результаты.

Происходят ли переписывания более низкого уровня?

старый Включенная вами строка журнала - это браузер мобильного телефона. Есть ли у вас другая обработка Apache, которая работает с мобильными веб-браузерами? Выполняете ли вы какие-либо перезаписи, соответствующие HTTP_USER_AGENT, и отправляете ли запрос в другое место?

Похоже, вам, вероятно, просто нужно добавить опцию «Индексы» в объявления вашего каталога, в частности / main / directory.