Apache + Plesk的虚拟主机问题:.htaccess忽略!

我有一个简单的Apacheconfiguration的问题。

当用户要求https://mydomain.com我必须redirect到https://www.mydomain.com ,因为我的https证书是有效的只是与www域。

我创build了vhost.conf到我的/var/www/vhosts/mydomain.com/conf/目录里面:

<Directory /var/www/vhosts/mydomain.com/httpsdocs> AllowOverride All </Directory> 

而我的.htaccess文件进入/var/www/vhosts/mydomain.com/httpsdocs/是:

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

但似乎完全忽略.htaccess。

任何想法?

https连接的顺序是粗略的

  1. 用户键入https://mydomain.com到地址&#x680F; – 浏览器将其parsing为IP地址1.1.1.1
  2. 浏览器在端口443上打开连接到1.1.1.1。
  3. 服务器发送www.mydomain.com证书 – 浏览器检查主机名“mydomain.com”
  4. 浏览器显示错误信息,用户点击“确定/继续/等”。
  5. 浏览器通过SSL连接发送HTTP请求,包括主机:标题“mydomain.com”
  6. mod_rewrite使用您的htaccess文件中的规则来发送redirect。

所以在连接获得足够的mod_rewrite动作之前,错误信息已经发生了。 为了防止错误的发生,你必须得到一个拥有主题备用名称的证书(即适用于www和非www),或者使用SNI(在SSL协议中增加一个额外的步骤,浏览器可以告诉Apache哪个主机名希望,Apache可以select适当的证书)。

另外,即使连接是HTTPS(因为这只是“SSL隧道内部的HTTP”的缩写),variables总是被称为%{HTTP_HOST}。