我正在尝试为用户提供从其 chroot 内部提供的静态文件夹。以下代码在其他条件下工作(基本上不包含 DBDocRoot 指令),但只是不符合预期。mod_vhost_dbd 与 mod_rewrite 根本不兼容吗?它的部分工作原理是请求命中正确的 python 脚本,然后执行一些其他操作并启动 wsgi 应用程序。
使用此代码,rewrite.log 中不会记录任何内容。如果您注释掉 DBDocRoot 指令行,则会记录内容,但重写规则当然不起作用,因为 ${ENV:username} 是空字符串。从 mysql 控制台运行时,查询工作得很好。
LoadModule vhost_dbd_module /usr/lib/apache2/modules/mod_vhost_dbd.so
DBDExptime 5
<VirtualHost *:80>
ServerAlias *
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9
DBDriver mysql
DBDParams host=amysqlhost,user=abdbuser,pass=private,dbname=adbname
DBDocRoot "SELECT concat('/mnt/user_storage/webscripts/', username, '/user_script.py'), username from user, userdomain where user.id = userdomain.user_id and userdomain.domain_name = %s" HOSTNAME
RewriteCond /mnt/user_storage/homedirs/%{ENV:username}/var/www/static%{REQUEST_URI} -f
RewriteRule ^/(.*) /mnt/user_storage/homedirs/%{ENV:username}/var/www/static/$1 [L]
</VirtualHost>
有没有其他人成功地使用这个模块来设置环境变量?mod_vhost_dbd wiki上的注释说可以做到。