
我的 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
更新
好吧,快速檢查一下就會發現,無論有沒有 URL,<LimitExcept>
URLREPORT
都是一樣的。這是沒有日誌的樣子<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 是由命令生成的 Subversion URL svn log
- 我不是!svn
向其中添加 的人)
完整的 VirutalHost/logs/
如下:
<Location /logs/>
DAV svn
SVNParentPath C:\SVN
<LimitExcept OPTIONS PROPFIND REPORT>
deny from all
</LimitExcept>
</Location>
答案1
這是 2.2.15 中最新的 mod_dav.c 的樣子(為簡潔起見進行了編輯):
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 中的此目錄,以及是否有適當的存取控制來允許從該位置讀取資源。接下來我們需要查看所有設定資訊。