首页 > 解决方案 > SSL强制通过.htaccess导致wordpress上的重定向循环

问题描述

我正在尝试在我的 Wordpress 网站上强制使用 SSL。我已经按照我在互联网上找到的每一步(force_ssl_admin,将站点设置为 https://),但是当将 .htaccess 文件更改为强制使用 ssl 时,我陷入了重定向循环。我发现这个帖子有人有同样的问题,但似乎没有解决。我不确定我的问题是否完全一样,所以这就是为什么我想就我的问题发表一篇文章。

当我添加这个 .htaccess 时:

SetEnvIf X-Forwarded-Proto https HTTPS
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite.be [NC,OR]
RewriteCond %{HTTP_HOST} ^www.mysite.be [NC]
RewriteRule ^(.*)$ https://www.mysite.be/$1 [L,R=301,NC]
</IfModule>
# END WordPress

我陷入了重定向循环。(当然my site改成了我的域)回到这个.htaccess:

SetEnvIf X-Forwarded-Proto https HTTPS
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

允许我回到我的 wp 页面。也许有点旁注:我的网站本身仍然可以使用重定向循环,只有管理页面处于重定向循环中。

旁注:我之前尝试过该插件simple-ssl,这可以强制使用 ssl,但它也确保我失去了 facebook http 的点赞和评论,所以我不想使用这个插件。

标签: phpwordpress.htaccessssl

解决方案


编写RewriteCond以防止代码在已经是 https 的情况下以不同的方式执行是我的解决方法。我尝试了很多方法来检查 url 是否是 https 或者不是%{HTTPS} !on%{HTTPS} off但没有任何效果。但是,这条评论帮助了我。

我的答案是重写条件:

RewriteCond %{HTTP:X-Forwarded-Proto} !https

最终我的 .htaccess 文件只是:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://mysite.be/$1 [R,L]

推荐阅读