Мы настроили веб-сайт с 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.