【问题标题】:Multiple Domains, one SSL, Need a htaccess file多个域,一个 SSL,需要一个 htaccess 文件
【发布时间】:2017-09-25 13:07:52
【问题描述】:

我是这个 SSL 流程的新手。我在一台 GoDaddy 服务器上托管多个域。一个刚刚获得了 SSL。我配置了 htaccess 文件,以便域适用于 SSL,但其他域存在安全问题,所以我需要添加一些代码来保持它们是 http 而不是 https。这是我当前的 htaccess 文件:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://wisconsin.com/$1 [L,R=301]

【问题讨论】:

  • 添加一个检查请求主机名的 RewriteCond ...
  • 它们都是 https 并且您只想保留一个而排除其他的吗?

标签: .htaccess ssl


【解决方案1】:

您需要添加一个条件来指定需要在哪个 URL 上使用它。您可以通过添加以下行来做到这一点:(感谢@croises 对此的意见)

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?wisconsin\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://wisconsin.com/$1 [L,R=301]

或者你可以使用if directive:

<if "%{HTTP_HOST} == 'winconsin.com'">
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://wisconsin.com/$1 [L,R=301]
</if>

确保在测试之前清除缓存。

【讨论】:

  • 感谢您的快速回答。我很清楚,如果我这样做: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ wisconsin.com/$1 [L,R= 301] 只有 wisconsin.com 将使用 SSL,所有其他域都不会。对吗?
  • 否,因此如果您使用if directive,HTTPS 代码将进入其中。我会把它作为我的答案的编辑。
  • 谢谢,这有点用。我清除了缓存。如果我输入 www.wisconsin.com,我会得到 https,如果我输入 wisconsin.com,我会得到一个错误。其他域获得 http,就像他们应该的那样。那么我需要添加什么才能使 wisconsin.com 和 www.wisconsin.com 都获得 https?
  • @Lag 使用可选的www. 将 2 RewriteCond 更改为一个 RewriteCond %{HTTP_HOST} ^(?:www\.)?wisconsin\.com [NC]
  • 谢谢@croises 我以前没有使用过这种方法,但我在我的身上测试过,效果很好。每天都能学到新东西,即使是在回答大声笑的时候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 2014-08-28
  • 2011-09-14
相关资源
最近更新 更多