Apache LimitExcept que devuelve el error 400 en el método permitido

Apache LimitExcept que devuelve el error 400 en el método permitido

Tengo la siguiente directiva en mi Apache httpd.conf:

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

OPTIONSy PROPFINDfunciona como se esperaba, pero REPORTregresa 400: Bad Request. Retire LimitExcepttodo y todo funcionará como se esperaba.

¿Alguna idea de por qué podría ser esto?

(Por favor mirami pregunta aquípara ver lo que estoy intentando hacer).

El registro de acceso muestra:

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

El registro de errores muestra:

[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

Actualizar

Bien, una inspección rápida revela que con o sin la <LimitExcept>URL REPORTpermanece igual. Así es como se ve el registro sin <LimitExcept>(todo lo demás en la configuración permaneció igual):

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

(tenga en cuenta que esa URL es una URL de Subversion generada por el comando svn log; no soy yo quien !svnle agrega)

El VirutalHost completo /logs/se ve así:

<Location /logs/>
   DAV svn
   SVNParentPath C:\SVN
   <LimitExcept OPTIONS PROPFIND REPORT>
       deny from all
   </LimitExcept>
</Location>

Respuesta1

Así es como se ve el último mod_dav.c en 2.2.15 (editado por brevedad):

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;
  }

Entonces, mi instinto es que ap_xml_parse_input(r, &doc)) está dejando doc=NULL; basado en no poder acceder a ese nombre de documento cuestionable (¿tiene un! En él?) y escupir un 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

... huele a que el problema radica en cómo el /logs/ virtual del access_log se asigna a este directorio en error_log, y si existen controles de acceso adecuados para permitir que los recursos se lean desde la ubicación. Necesitamos ver toda esa información de configuración a continuación.

información relacionada