Apache LimitExcept在允许的方法上返回Error 400

我在我的Apache httpd.conf有以下指令:

 <LimitExcept OPTIONS PROPFIND REPORT> deny from all </LimitExcept> 

OPTIONSPROPFIND按预期工作,但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信息。