dynamicAuthUserFile在Apache与mod_rewrite。 可能吗?

我有一个服务器与几个scponly帐户,我想在基本身份validation提供http访问。

问题的第一部分解决了,使用mod_rewrite为每个用户select合适的目录。 但是当我尝试为每个用户build立一个不同的auth用户文件时,问题就出现了。 只是我无法find如何做到这一点。

这是一个示例configuration。

<VirtualHost an-ip-number-and:a-port> ServerName *.example.com RewriteEngine On UseCanonicalName Off RewriteCond %{HTTP_HOST} ^(.*).example.com RewriteCond /server/scponly/%1/incoming -d RewriteRule ^(.+) %{SERVER_NAME}$1 [C] RewriteRule ^([^.]+)\.example\.com/(.*) /server/scponly/$1/incoming/$2 [L] RewriteRule ^(.+) http://FAIL.example.com <Directory /server/scponly/*/incoming> AuthType Basic AuthName "SFTP-HTTP Area" AuthUserFile ??????? # <-- this! require valid-user </Directory> </VirtualHost> 

笔记:

  • 我不能下降mod_rewrite因为其他目的,实际的configuration是与其他servername /目录混合检查/重写。
  • 我无法将身份validation详细信息移至.htaccess文件,因为用户可能会将其删除。 但是,如果这种方法是部分解决scheme,我很感兴趣。
  • 我也对其他方法感兴趣
  • 我需要为每个目录创build不同的auth文件,只有一个文件将授予每个用户对所有目录的访问权限

为了扩大peelman的答案,你将不得不为每个用户分开一个部分:

 <Directory /server/scponly/*/incoming> AuthType Basic AuthName "SFTP-HTTP Area" AuthUserFile /path/to/user/htpasswd </Directory> <Directory /server/scponly/bob/incoming> require user bob </Directory> <Directory /server/scponly/smith/incoming> require user smith </Directory> 

一个彻底的方法是使用mod_perl,它允许你用perl来configurationapache。 这将在一个Apacheconfiguration文件:

 <Perl> for $dir (glob "/server/scponly/*/incoming") { ($user) = $dir =~ m%/server/scponly/([^/]+)/incoming%; exists $Directory{$dir} or $Location{$dir} = { }; $Directory{$dir}{AuthType} = 'Basic'; $Directory{$dir}{AuthName} = 'SFTP-HTTP Area'; $Directory{$dir}{AuthUserFile} = '/path/to/htpasswd'; $Directory{$dir}{require} = "user $user"; } </Perl> 

(写下我的头顶。)

咦? 你可以只有一个文件。 您只需将您的Require参数更改为userid而不是valid-user。 看到这里: Apache文档 。