我试图在我的Wordpress网站上强制使用SSL。我已经按照我在互联网上找到的每个步骤进行操作(force_ssl_admin,将站点设置为https://),但是将.htaccess文件更改为强制ssl的内容时,我陷入了重定向循环。我发现this post那里有人遇到相同的问题,但似乎没有解决。我不确定我的问题是否完全相同,所以这就是为什么我要发表关于我的问题的帖子。

当我添加此.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的赞和评论,因此我宁愿不使用此插件。

最佳答案

对我来说,编写RewriteCond来防止在已经以其他方式使用https时执行代码。我尝试了很多方法来使用%{HTTPS} !on%{HTTPS} off检查URL是否为https,但是没有任何效果。但是,this comment帮助了我。

对我来说,答案是重写条件:

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


最终我的.htaccess文件只是:

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

关于php - 通过.htaccess的SSL强制会在wordpress上导致重定向循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50243690/

10-12 00:10
查看更多