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はコマンドsvn log
によって生成されたSubversionURLであることに注意してください-私はそれに!svn
を追加するものではありません)
/logs/
の完全なVirutalHostは、次のようになります。
<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の仮想/ logs /がerror_logのこのディレクトリにどのようにマップされているか、およびその場所からリソースを読み取ることができる適切なアクセス制御があるかどうかにあるようです。次に、そのすべての構成情報を確認する必要があります。