使用Auth和Canonical重定向在Apache上强制SSL

cwd*_*cwd 4 apache authentication .htaccess redirect rewrite

我已经阅读了一些关于如何重定向到SSL的帖子,还有一些关于如何确保网站使用www子域/规范名称的帖子,以及一些关于如何设置Basic Auth的帖子.这是我现在在.htaccess文件中的内容:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


RewriteEngine on
RewriteCond %{HTTP_HOST} !(^www\.site\.com*)$
RewriteRule (.*) https://www.site.com$1 [R=301,L]


AuthName "Locked"
AuthUserFile "/home/.htpasswd"
AuthType Basic
require valid-user

它工作得很好,但我想优化它.我的问题包括:

  1. 如何避免双重身份验证?当我访问网站时,我必须进行身份验证,然后我被重定向到SSL并且必须再次进行身份验证.我可以重定向然后进行身份验证吗?
  2. 看起来第一条规则非常棒,因为我可以在任何网站上使用它而无需修改它.规则#2可以重写为与站点无关吗?即:无论域名是什么,它都会强制www在任何网站上使用(有更好的书面规则)?这里回答
  3. 我如何使用适用于任何网站的规则来强制网站不使用www,即从www.site.com重定向到site.com? 这里回答

Ask*_*ter 5

对于#1

如何避免双重身份验证?我可以重定向然后进行身份验证吗?

繁荣!这有效.

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.askapache.com"
ErrorDocument 403 https://www.askapache.com/admin/
Run Code Online (Sandbox Code Playgroud)

看到:

只需将上面的块放在.htaccess的顶部,这是我的:

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.askapache.com"
ErrorDocument 403 https://www.askapache.com/admin/

AuthType Digest
AuthName "Protected By AskApache"
AuthDigestDomain / https://www.askapache.com/admin/
AuthUserFile /home/askapache/.htpasswd-digest
Require valid-user
Satisfy All
Run Code Online (Sandbox Code Playgroud)