2012-06-14 125 views
3

我试图在域上强制使用HTTPS。它必须使用一种按域名而不是端口号工作的方法来完成(由于主机结构/设置)。.htaccess强制HTTPS

我最亲密的尝试是:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^.*$ https://www.mydomain.com/$1 [R=301,L] 

打字的时候“mydomain.com”到地址栏,自动重定向本工程以“https://mydomain.com”但是当我键入“www.mydomain .com“它不起作用。我认为这是一个语法问题,因为我对htaccess非常陌生,花了大约4个小时试图从其他代码创建解决方案。

指针的任何机会?


使设置更容易理解。

/public_html/ - 此文件夹中的所有文件涉及到www.mydomain.com
/public_html/subfolder - 这些文件夹包含还涉及mydomain.com
/public_html/subdomain文件 - 这些文件夹包含有关www.myotherdomain.com

我的其他领域是对的mydomain.com子域文件被列在主机上的cPanel中。
例如:subdomain.mydomain.comwww.myotherdomain.com相同。

希望能清除结构。

回答

2

只要对精确域mydomain.com(这就是RewriteCond测试的内容)发出请求,就会发生重定向。它不适用于任何其他域,也不检测HTTPS。改为:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.mydomain.com/$1 [R=301,L] 
+0

我使用Bluehost作为我的主机。他们的设置方法是,主要网站(我正在尝试使用https的网站)列在“public_html”下。 我所有的其他网站都在“public_html”的子文件夹中,受到.htaccess文件的影响,导致所有域现在重定向到“mydomain.com” – Daniel

+0

@Daniel我看到了。我会更新我的答案。您的其他网站是否有任何mydomain子网域,或者它们都是不同的网域? – Paulpro

+0

我有一个域名为每个,但对于他们是在cPanel上,他们必须分配子域名。例如:** www.mydomain.com **和** subdomains.mydomain.com **(这也是** www.myotherdomains.com **) – Daniel