我在我的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> , REPORTurl都保持不变。 这就是没有<LimitExcept>情况下日志的样子(configuration中的其他所有东西都保持不变):
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是由svn log命令生成的Subversion URL – 我不是那个将!svn添加到它的人)
完整的VirutalHost for /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
…它闻起来像问题在于如何将access_log中的virtual / logs /映射到error_log中的此目录,以及是否有适当的访问控制以允许从该位置读取资源。 接下来我们需要看到所有的configuration信息。