【问题标题】:How to force https via htaccess如何通过 htaccess 强制 https
【发布时间】:2019-07-08 07:46:31
【问题描述】:

我有一个使用多个别名的应用程序,我想确保每个站点的访问者始终被重定向到 https。

所以我已将此规则添加到我的 htaccess 文件中:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example1.com$
RewriteRule (.*) https://www.example1.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example2.com$
RewriteRule (.*) https://www.example2.com/$1 [R=301,L]

访问http://example.com 时,他们会被重定向到https://www.example.com

但是,当他们访问:www.example.com 时,他们不会重定向到 https 域。

有没有一种简单的方法可以强制所有域为https://www。无需明确提及每个域?

【问题讨论】:

标签: .htaccess


【解决方案1】:

将您的重写更改为此规则。首先捕获所有 https:// 和 http:// 非 www 域请求并重定向到 https://www.requested-domain。其次捕获所有其他http://www 域请求并重定向到https://www.requested-domain

RewriteEngine On
RewriteBase /

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

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

【讨论】:

  • 不幸的是,这似乎造成了重定向循环。
  • 第一个捕获所有non www (http:// and https://),第二个http://www,默认是https://www...循环在哪里?这个顺序的规则应该没问题。
【解决方案2】:

这就是我的做法

RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2013-01-31
    • 2018-05-04
    • 2017-05-24
    • 2012-06-17
    • 2017-10-12
    • 2016-06-11
    相关资源
    最近更新 更多