【问题标题】:Too many redirects configuring HTTPS redirect on .htaccess在 .htaccess 上配置 HTTPS 重定向的重定向过多
【发布时间】:2018-11-09 07:54:46
【问题描述】:

我有一个网站,https://example.comhttp://example.comhttps://www.example.comhttps://www.example.com 工作正常。

现在我希望无论您键入哪个,它都会重定向到https://www.example.com。我在我的 .htaccess 中使用下面的代码(并尝试了更多),但是在浏览器中进行重定向后,页面没有加载,给出错误“重定向太多”。我当然试过删除缓存。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

【问题讨论】:

  • 您使用的是 cloudflare 还是类似的东西?
  • 我正在使用 Heroku
  • Heroku 在你的应用程序前面有自己的路由层,所以你不会总是知道它是否通过 SSL 进来。这个问题有几个特定于 Heroku 的答案stackoverflow.com/questions/34862065/…
  • @JonLin 这有点误导。您将始终知道它是否通过 SSL 传入。重要的不是端口号。 X-Forwarded-Proto 告诉您,它应该始终存在。

标签: .htaccess mod-rewrite https


【解决方案1】:

由于我的主机是 Heroku,它有特殊的规则,所以其他任何解决方案都不适合我。 .htaccess 中的以下代码就像一个魅力:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

【讨论】:

  • 这是唯一适用于我的服务器的重写条件组合。谢谢!
【解决方案2】:

我有类似的问题,下面的代码为我解决了问题

 RewriteEngine on
 RewriteCond %{HTTPS} off
 RewriteCond %{HTTP_HOST} ^[DOMAIN HERE]$
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Note: Replace[这里的域名]Should be Replaced With you domain

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2014-03-05
    • 2016-11-11
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多