我需要在主域而不是子域上强制 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.com
或mydomain.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.com
和 http://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 作为子域运行,另一个应用程序在主域上运行
如果我使用 www,我可以从子域访问 iframe 的内容吗?在主域上?