我在FreeBSD 10.1服务器上运行Apache24。我想使用mysql数据库控制对网站某些部分的访问。由于使用AuthType Basic执行身份验证,我想强制SSL以避免以明文形式接收密码。
以下配置接缝可以正常工作,但我不确定mod_rewrite是在认证之前还是之后运行。
<Directory "/usr/local/www/apache24/data/webdav">
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Dav On
AuthType Basic
AuthName "webdav"
AuthBasicProvider socache dbd
AuthDBDUserPWQuery "SELECT passwd FROM webdav_group_v WHERE user = %s"
AuthnCacheProvideFor dbd
Require valid-user
</Directory>
提前感谢您的帮助
答案 0 :(得分:1)
我认为它不会起作用,它会在重定向到SSL之前要求授权。相反,您可以将Auth
指令放在与SSL端口对应的VirtualHost
块中(443)。你也不是真的需要mod_rewrite,而是一个简单的Redirect
指令。
<VirtualHost *:80>
ServerName www.domain.com
Redirect "/" "https://www.domain.com/"
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.com
DocumentRoot "/usr/local/www/apache24/data/webdav"
Dav On
AuthType Basic
AuthName "webdav"
AuthBasicProvider socache dbd
AuthDBDUserPWQuery "SELECT passwd FROM webdav_group_v WHERE user = %s"
AuthnCacheProvideFor dbd
Require valid-user
</VirtualHost>