php - 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 的点赞和评论,所以我不想使用这个插件。
解决方案
编写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]
推荐阅读
- android - 膨胀类 com.google.vrtoolkit.cardboard.CardboardView 时出错使应用程序崩溃
- azure-ad-b2c - 没有用户的 Azure B2C 身份验证
- python - docker-compose run 成功时 docker-compose up 失败
- python - 用于文本分类的一个巨大或多个小型模型
- eclipse-plugin - 以编程方式停用所有 Codan Checkers
- java - Rapidclipse - 一个屏幕中的多个窗口使用过滤器进行选择
- python - 分级机未正确计算输出
- apache-spark - 在 pyspark 2.4 中使用正则表达式的 ParseException 错误
- c# - ObjectStateManager 不包含引用 X 类型对象的 ObjectStateEntry
- android - color_primary和color_secondary默认常用哪些UI组件?