【发布时间】:2020-11-09 19:19:06
【问题描述】:
我使用一个名为lets-proxy2 (https://github.com/rekby/lets-proxy2) 的服务来自动从Let's Encrypt 获取和更新证书。
这很好用,但是当尝试在 .htaccess 文件中将 http 重定向到 https 时,我得到一个无限重定向循环,它在浏览器中抛出错误 ERR_TOO_MANY_REDIRECTS。
我尝试了几种不同的 RewriteConds 和 RewriteRules,但都遇到了同样的问题。
我正在使用的当前 .htaccess 文件是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-FORWARDED-PROTO} !(^.+)
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>
我需要强制 https 以确保所有 http 流量都重定向到 https,但是目前尝试使用 .htaccess 文件将无法正常工作。
任何帮助将不胜感激。
【问题讨论】:
-
尝试清除浏览器的缓存。并检查。
-
同时将
RewriteCond %{HTTP:X-FORWARDED-PROTO} !(^.+)更改为RewriteCond %{HTTPS} !on -
我看到那里已经创建了一个关于此的问题github.com/rekby/lets-proxy2/issues/140
-
您可以使用 certbot 代替lets-proxy。它还会自动更新您的证书。
-
我尝试清除 cookie 和缓存,但没有成功。我还尝试了更新的 .htaccess 文件规则 - 它仍在创建无限循环。
标签: apache .htaccess ubuntu https lets-encrypt