如何解决HTTP 到 HTTPS 的重定向过多
我遇到了一个奇怪的问题,每当我添加这个最常用的 htaccess 代码时,我都会收到太多重定向。
场景:
+public_html
|
|--- WordPress 1
|--- .htaccess
--+ /blog
|
|--WordPress 2
--.htaccess
.htaccess (WordPress 2)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.test/blog/$1 [R=301,L]
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated,and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#RewriteCond %{HTTPS} off
#RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
每当我在任何 htaccess 中添加 HTTPS 重定向代码时,它都会提供太多重定向。
似乎 RewriteCond %{HTTPS} 关闭此条件总是正确的,这就是原因(在此处检查:http://htaccess.madewithlove.be/) 我该如何解决这个问题?
注意:WordPress 主页/站点 URL 设置正确:https://domain.test/blog for WordPress 2
编辑: 解决方案:问题是 Cloudflare 中的灵活模式。当我在 Cloudflare 中将其设置为 Full SSL 模式时,问题就解决了。
解决方法
在您的文件 '.htaccess Wordpress 2 中,您有一个错误。
RewriteRule ^(.*)$ https://www.domain.test/blog/$1 [R=301,L]
这给您带来了问题。会发生什么:
- 比如说,你的输入是
http://www.domain.test/blog
- 行
RewriteCond %{HTTPS} off
将触发,因为您使用的是http
而不是https
- 意味着 newxt 重写规则被执行。
这部分:^(.*)$
表示:
-
从开始 (
^
) 到结束 ($
) 的所有内容。 (在您的情况下是blog
。) -
将该部分放入一个变量中。那就是括号部分
(.*)
的意思。它将使“一切”部分可用作变量$1
-
综合起来,您现在应该将
$1
替换为blog
。最终结果是:
因此,您应该首先删除第三行的 blog
部分:
RewriteRule ^(.*)$ https://www.domain.test/$1 [R=301,L]
可能会出现新问题,但您必须先解决这个问题。
,问题在于 Cloudflare 中的灵活模式。当我在 Cloudflare 中将其设置为 Full SSL 模式时,问题就解决了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。