mod_rewrite强制ssl在apache24

时间:2015-06-06 13:03:21

标签: apache mod-rewrite ssl

我在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>

提前感谢您的帮助

1 个答案:

答案 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>