.htaccess 错误 - ERR_TOO_MANY_REDIRECTS

2023-12-30

我有这个 .htaccess 文件要重定向http:// to https://
我也做了www.到根域重定向!
www.到根域有效!然而https://重定向没有! 如果我设置RewriteCond %{HTTPS} on to RewriteCond %{HTTPS} off or RewriteCond %{HTTPS} =!on我收到浏览器错误:

example.com 页面无法正常工作

mysite.com 重定向您的次数过多。

尝试清除您的cookie。

ERR_TOO_MANY_REDIRECTS


我所做的一次编辑给出了 500 错误,但我将其恢复到之前的状态!我所做的只是改变:RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} to RewriteRule(.*) https://%{HTTP_HOST}%{REQUEST_URI} or RewriteRule (.*)https://%{HTTP_HOST}%{REQUEST_URI}

有人对如何解决这个问题有任何想法吗?

这是我的全部.htaccess file!

<IfModule mod_rewrite.c>
 RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTPS} on          [OR]
RewriteCond %{HTTP_HOST} ^www\.   [NC]
RewriteRule ^ https://antimalwareprogram.co%{REQUEST_URI}     [R=301,L,NE]
</IfModule>

RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

是的,这将创建一个重定向循环。逻辑是错误的。这说明的是...如果 HTTPS 处于“打开”状态,则重定向到 HTTPS。您应该检查 HTTPS 是否“关闭”(或“未打开”),即。!on).

(通过删除参数之间的空格,您可能会创建重写循环,因此会出现 500 错误。空格是 Apache 配置文件中的分隔符。)

请尝试类似以下内容:

RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L,NE]

这可以处理 HTTPS 和 www 规范重定向。你不需要第一条规则。你不需要<IfModule>容器也可以。

改变302 to 301仅当您确定它工作正常时。

确保在测试之前已清除浏览器缓存。 301 被浏览器硬缓存。


UPDATE:如果这仍然给您带来相同的错误(重定向循环),那么您的 SSL 可能是由前端代理管理的,而不是您的应用程序服务器。如果是这种情况,那么您将无法使用HTTPS服务器变量。请参阅这些相关问题:

  • 通过 htaccess 从 http 到 https 重定向:不正确的重定向错误 https://stackoverflow.com/questions/45285014/http-to-https-redirection-through-htaccess-incorrect-redirection-error
  • htaccess 重写 - 太多重定向 https://stackoverflow.com/questions/43743283/htaccess-rewrite-too-many-redirects

看来,在这种情况下,ENV:HTTPS(环境变量)需要用来代替HTTPS(Apache 服务器变量)。但请注意,这是非标准/特定于服务器的,因为它意味着使用前端代理来管理 SSL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess 错误 - ERR_TOO_MANY_REDIRECTS 的相关文章

随机推荐