authentication之前强制https – 不能访问虚拟主机

在服务器方面,我是个初学者,而且我遇到类似于这个问题的问题。 访问所需的网页时,.htpasswd会在我被redirect到https之前提示我进行validation。

是否有任何解决方法仅通过编辑.htaccess文件,因为我没有权限更改虚拟主机configuration文件。

直到现在我的.htaccess文件中的相关行看起来像这样:

BlockquotRewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{ENV:HTTPS} !=on RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] AuthType Basic AuthName "members only" AuthUserFile /var/www/myweb/.htpasswd Require valid-user 

有一个SSLRequireSSL指令可能在这里工作 – http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslrequiressl

RequireSSL的缺点是,如果有人连接到“http://”他们得到一个访问被拒绝。

一个更加用户友好的解决scheme是有两个VirtualHost条目(一个用于HTTP,一个用于HTTPS),并且第一个做一个redirect。 例如

 <VirtualHost *:80> ServerName www.yoursite.com ServerAlias yoursite.com Redirect permanent / https://www.yoursite.com/ </VirtualHost> <VirtualHost *:443> SSLEngine on AuthType Basic AuthName "members only" AuthUserFile /var/www/myweb/.htpasswd Require valid-user .... </VirtualHost> 

在你的情况下,这也意味着他们会被提示input密码之前被redirect到SSL站点。