【发布时间】:2016-06-08 16:18:17
【问题描述】:
我有一个 RewriteRule 的问题,该 RewriteRule 可以(或多或少)在浏览器的 html 视图中工作,但不能作为客户端的 WebDav 服务(Linux 下的 davfs 或 cadaver)。我的感觉是和RewriteRule有关。
我想要做什么:从 URL 的角度来看:有一个文件夹 /users/somebody,其中 somebody 是个人用户名。我想要一个快捷方式/private,它直接指向我有写权限的/users/myusername 目录。 在文件系统中,我有 /storage/davroot 用于 DAV,DocumentRoot 和 /storage/davusers 用于所有用户目录。请注意,用户目录不在 DocumentRoot 中,这有点棘手。
我目前的解决方案是这样的:
# It's NOT working with the RewriteCond -- why?
# RewriteCond %{LA-U:REMOTE_USER} ^[a-z].*
RewriteRule ^\/private(.*)$ /users/%{LA-U:REMOTE_USER}$1 [PT]
<Directory /storage/davroot/>
# some settings for the rights, do not care
</Directory>
Alias /users /storage/davusers/
<Directory "/storage/davusers/">
# some other settings for the rights, also don't care
</Directory>
什么是正确的:几乎整个浏览器视图都是正确的。除了一个问题:正确列出了 url /private/,url 栏保持 /private/(想要的行为)。但是 url /private 被转换为 /users/username/ 并且 url 栏也更改为该地址。为什么?
如果我使用 webdav 客户端 (davfs) 登录,主题甚至会变得陌生。私人文件夹为空,用户文件夹无法访问。使用 cadaver 时,无法访问私人文件夹,并且正确显示了用户文件夹。
【问题讨论】:
标签: apache mod-rewrite webdav