2012-06-25 23 views
0

我有godaddy托管,我用它来承载多个域。有了这个托管,我得到了一个免费的标准(单域)SSL证书。我将其设置在我的主域上,并且都很好,https://www.primarydomain.com的作品。此外,我的辅助网站仍然与常规http协同工作。.htaccess SSL单域

(也只是让你知道,大多数浏览器告诉我,当我去https://secondarydomain.com回去,不良网站,可能会损害计算机等专业,因为该证书只适用于主。)

那么我试图做的是,当用户进入到我的主站点,htaccess的使用此代码会自动更改为HTTPS:

RewriteEngine On 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

这工作,一切都很好,但由于二级域名得到他们的内容形式的目录第一个域,.htaccess会影响我拥有的所有域,因此尝试将https添加到我的辅助域。 (告诉用户离开网站)

我该如何告诉.htaccess只有在我的主域名时才更改为https,并且仅为我的辅助域名保留http?

如果你不知道到底我说的话,你可以看到马上我的主域名更改为https:我的中学域http://www.alexkafer.com

接着一个:http://www.codingapple.com还试图更改为https,即使它不是针对该域名制作的。 我保证我的中学不会损害你的电脑,它只是证书不是域名codingapple.com这就是我正在努力解决的问题。

+0

你应该看看[this](http://serverfault.com/a/360985/47187)。 – Bruno

+0

@布鲁诺我可能是错的,但我不认为他在'mod_ssl'之前试图调用'mod_rewrite',他只是想在重定向到'HTTPS'之前检查主机名。 –

+0

@ScottS,好点,我太快读过这个问题了,对不起。 @Alex,你有没有尝试添加另一个重写条件?像其他重写条件下的“RewriteCond%{HTTP_HOST} www.primarydomain.com”。 – Bruno

回答

0

谢谢@Scott S代码。它运作了完美,除了它做了我想要的对照。

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(127\.0\.0\.1|localhost)$ 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

上述代码将每个辅助域更改为HTTPS而不是主要HTTPS。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(127\.0\.0\.1|localhost)$ 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

我删除了!在^(127.0.0.1 | localhost)$之前,现在它正在做我所需要的!

+0

这有点奇怪,如果你仍然希望你的主域被重定向,那么'www.primarydomain.com'不应该匹配'^(127 \ .0 \ .0 \ .1 | localhost)$'。 – Bruno

+0

我并不打算将代码用作本地域检查器(**“例如,下面的代码”**),但如果它工作正常...... –

0

添加一个RewriteCond检查网址。

例如,如果以下代码不是本地连接,它将打开HTTPS

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(127\.0\.0\.1|localhost)$ 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

我该如何切换?因此,如果代码是本地连接,代码将打开HTTPS。 – Alex