.htaccess错误-错误_太多_重定向

irtuqstp  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(150)

我有这个.htaccess文件来将http://重定向到https://
我还做了www.到根域重定向!
www.到根域工作!但是https://重定向不工作!如果我将RewriteCond %{HTTPS} on设置为RewriteCond %{HTTPS} offRewriteCond %{HTTPS} =!on,我得到一个浏览器错误:

example.com网页无法使用

mysite.com 重定向您的次数太多。
请尝试清除您的Cookie。
ERR_TOO_MANY_REDIRECTS
我做的一个编辑给了我一个500的错误,但我把它恢复到以前的样子!我所做的只是改变:RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}RewriteRule(.*) https://%{HTTP_HOST}%{REQUEST_URI}RewriteRule (.*)https://%{HTTP_HOST}%{REQUEST_URI}

有人知道如何解决此问题吗?

这是我的整个.htaccess文件!

<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>
wfsdck30

wfsdck301#

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

是的,这将创建一个重定向循环。逻辑是错误的。它说的是...如果HTTPS是“开”,那么重定向到HTTPS。你应该检查HTTPS是否是“关”(或“不开”,即!on)。
(By删除参数之间的空格可能会创建一个重写循环,因此出现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工作正常时,才将其更改为301
确保在测试之前已经清空了浏览器缓存。301会被浏览器硬缓存。

**UPDATE:**如果仍然出现相同的错误(重定向循环),则可能是SSL由前端代理管理,而不是由应用服务器管理。如果是这种情况,则无法使用HTTPS服务器变量。请参阅以下相关问题:

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

相关问题