我已经阅读了一些关于如何重定向到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
它工作得很好,但我想优化它 . 我的问题包括:
-
如何避免双重身份验证?当我访问网站w.o. SSL我必须进行身份验证,然后我被重定向到SSL并且必须再次进行身份验证 . 我可以重定向然后进行身份验证吗?
-
看起来第一条规则非常棒,因为我可以在任何网站上使用它而无需修改它 . 规则#2可以重写为与站点无关吗?即:无论域名是什么,它都会强制www在任何网站上使用(有更好的书面规则)? answered here
-
我如何使用适用于任何网站的规则来强制网站不使用www,即从www.site.com重定向到site.com? answered here
5 回答
对于#1:
设置 Auth 指令 *only on the VirtualHost which is listening on :443 . 您应该有2个VirtualHost,一个在端口80上侦听,另一个在端口443上 . 在非SSL通信上使用
AuthType Basic
是一个大问题,用户名和密码只是base64编码,所以在每个请求(甚至图像或css)上都是 clear 在您的http服务器上使用!对于#1
如何避免双重身份验证?我可以重定向然后进行身份验证吗?
繁荣!这有效 .
看到:
http://www.askapache.com/htaccess/apache-ssl-in-htaccess-examples.html
http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html
http://www.askapache.com/htaccess/htaccess.html
只需将上面的块放在.htaccess的顶部,这是我的:
如果您使用的是Apache 2.4,则还可以避免使用configuration sections进行双重身份验证 .
我在answer here中给出了一个更精致的版本 .
这是我的解决方案,以防止以前重写的双重身份验证,如:
即使我不是真的需要条件 - 如果Rewrite由于某种原因不起作用,它会更多地作为额外的安全性回退 .
感谢上面的回复,它有助于创建组合的https和www解决方案 . 我唯一担心的是,如果某些条件导致auth未被触发,允许某人在没有凭据的情况下访问 . 我不确定有没有,但也许你们聪明的人可能会说不然 .
此代码使用.htaccess文件夹auth将非www重定向到www和http到https .
这是您要保护的目录中的htaccess文件的内容: