【发布时间】:2015-12-21 09:30:54
【问题描述】:
我正在开发一个网站,该网站基本上是一堆数据的文件存储库。
我需要人们能够通过 WebDAV 和他们的浏览器(即 mod_autoindex)遍历目录并下载文件。
仅使用 mod_autoindex 和 mod_dav 就可以正常工作。但我想使用 mod_wsgi/Flask 来定制和提供目录列表页面,而不是使用 Flask-AutoIndex 插件相当不灵活的 mod_autoindex。
问题在于这似乎会干扰 DAV 请求。我尝试连接 DAV 客户端时收到 The URL contains extraneous path components. The resource could not be identified. 错误。
有没有办法让 mod_wsgi 忽略所有带有 WebDAV 特定标头的请求,以便 mod_dav 可以正确处理它们?
编辑:
这是我的 Apache 配置:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
DavLockDB "/var/lib/urs_test/dav/DavLock"
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /urs_test/webdav_info /usr/local/apache2/htdocs/urs_test/app.wsgi
WSGIDaemonProcess test processes=2 threads=15
WSGIProcessGroup test
<Directory /usr/local/apache2/htdocs/urs_test>
AuthType UrsOAuth2
require valid-user
Dav On
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
另一个编辑:
所以我想我已经弄清楚这里发生了什么。它与被附加到请求路径的 WSGIScriptAlias 标记有关。
/urs_test/files 的 WebDAV 请求在到达 mod_dav 时被修改为 /usr/local/apache2/htdocs/urs_test/app.wsgi/files。
所以我需要找到一种方法来选择性地将别名指令应用于某些 HTTP 方法(即 PROPFIND)而不是其他方法(即 GET)。
【问题讨论】:
标签: python apache flask mod-wsgi webdav