【问题标题】:mod_rewrite to force ssl in apache24mod_rewrite 在 apache24 中强制使用 ssl
【发布时间】:2015-06-07 06:11:31
【问题描述】:

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

提前感谢您的帮助

【问题讨论】:

    标签: apache mod-rewrite ssl


    【解决方案1】:

    我认为它不会起作用,它会在重定向到 SSL 之前要求授权。相反,您可以将 Auth 指令放在与 SSL 端口 (443) 对应的 VirtualHost 块中。此外,您实际上并不需要 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>
    

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 2010-11-22
      • 2013-05-27
      • 2013-07-27
      • 2012-01-20
      • 2012-09-09
      • 1970-01-01
      • 2015-10-04
      相关资源
      最近更新 更多