我需要在主域而不是子域上强制 ssl

Posted

技术标签:

【中文标题】我需要在主域而不是子域上强制 ssl【英文标题】:I need to force ssl on main domain but not subdomain 【发布时间】:2014-05-07 08:02:59 【问题描述】:

www.mydomain.com 的主站点使用 SSL 证书设置为安全站点。

我需要创建一个不安全的子域 (http://open.mydomain.com)。

我正在使用 InMotionHosting.com 进行托管。我在 cPanel 中创建了子域并将其指向 public_html/open 的文件夹(主站点位于 public_html/mainsite)但是当我尝试访问子域 URL 时,我在 Chrome 中收到 SSL 错误,在 IE 中我得到重定向到https://www.mydomain.com/open。

我该如何解决这个问题?

这是我的 .htaccess 文件:

RewriteEngine on
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

RewriteCond %HTTPS off
RewriteRule (.*) https://%HTTP_HOST%REQUEST_URI 

【问题讨论】:

【参考方案1】:

把你的规则改成这样:

RewriteEngine on
RewriteBase /

RewriteCond %HTTPS off
RewriteCond %HTTP_HOST ^(www\.)?domain\.com$ [NC]
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301,NE]

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

【讨论】:

感谢您的建议。但是,这不再强制主域使用 SSL,因此可以不安全地使用主站点。也许我不清楚,但我需要 www.mydomain.com 始终是安全的,而 open.mydomain.com 是安全的 NEVER> 你是否在某个代理后面,否则第一条规则强制 www.mydomain.com 始终为 https。你还有其他规定吗? 不,不在代理后面,您给我的代码就是 .htaccess 文件中的全部内容。 其实我要稍微修改一下。当我在浏览器中输入www.mydomain.commydomain.com 时,它被强制为https。但是当我输入http://www.mydomain.com 时,它不是——它保持在不安全模式,我可以在不安全的情况下浏览网站。 令人困惑。你写了www.mydomain.com or mydomain.com in the browser, it is forced to https 然后在相反的地方写了http://www.mydomain.com 不是。 www.mydomain.comhttp://www.mydomain.com 不一样吗?【参考方案2】:

这对我有用:

<IfModule mod_rewrite.c>

RewriteCond %SERVER_PORT 80
RewriteCond %HTTP_HOST !^sub.example.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

</IfModule>

如果您想要多个子域,请像这样更改该行:

RewriteCond %HTTP_HOST !^(sub|lolo).example.com$

【讨论】:

以上是关于我需要在主域而不是子域上强制 ssl的主要内容,如果未能解决你的问题,请参考以下文章

Nginx - 将 Wordpress 作为子域运行,另一个应用程序在主域上运行

ajax主域和子域之间的跨域问题

如果我使用 www,我可以从子域访问 iframe 的内容吗?在主域上?

域和子域之间的 Firebase 身份验证共享

.htaccess - 将旧网站重定向到主域,但也将一些内容重定向到主域的子域

301从主域(www和非www)重定向到子域