В моем Apache есть следующая директива httpd.conf
:
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
OPTIONS
и PROPFIND
работать как положено, но REPORT
возвращается 400: Bad Request
. Удалить LimitExcept
все вместе и все работает как положено.
Есть идеи, почему это может быть?
(Посмотри пожалуйста мой вопрос здесь чтобы увидеть, что я пытаюсь сделать).
Журнал доступа показывает:
192.168.161.1 - - [21/Jun/2010:08:42:26 +1000] "REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1" 400 101
Журнал ошибок показывает:
[Mon Jun 21 08:42:26 2010] [error] [client 192.168.161.1] client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs
Обновить
Хорошо, быстрый осмотр показывает, что с или без <LimitExcept>
то REPORT
URL остается прежним. Вот как выглядит бревно без <LimitExcept>
(все остальное в конфиге осталось прежним):
192.168.161.1 - - [22/Jun/2010:21:03:42 +1000] "REPORT /logs/MV101Apps/!svn/bc/7821/MyApp/MyApps.edp HTTP/1.1" 200 115
(обратите внимание, что этот URL-адрес является URL-адресом Subversion, созданным командой svn log
- Я не добавляю !svn
к нему)
Полный VirutalHost для /logs/
выглядит так:
<Location /logs/>
DAV svn
SVNParentPath C:\SVN
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
</Location>
Вот как выглядит последний mod_dav.c в версии 2.2.15 (отредактировано для краткости):
static int dav_method_report(request_rec *r)
{
int result;
apr_xml_doc *doc;
if ((result = ap_xml_parse_input(r, &doc)) != OK)
return result;
if (doc == NULL) {
return HTTP_BAD_REQUEST;
}
Итак, мой инстинкт подсказывает, что ap_xml_parse_input (r, & doc)) оставляет doc = NULL; из-за невозможности получить доступ к этому сомнительному имени документа (в нем есть! ??) и выплевывать 400:
"REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1"
...
client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs
... похоже, проблема заключается в том, как виртуальный / logs / из access_log отображается в этот каталог в error_log, и есть ли надлежащие элементы управления доступом, позволяющие читать ресурсы из этого места. Далее нам нужно увидеть всю эту информацию о конфигурации.