强制HTTPS中断管理页面

时间:2018-08-27 19:36:32

标签: wordpress .htaccess https

首先,我寻找了它,但找不到它(因此我要发布)。因此,如果您错过解决方案,我深表歉意。我还认为这是服务器htaccess问题,而不是WordPress问题。

我最近在我的域上实现了SSL。我已经更正了数据库中的所有链接,并且只要我不强制重定向HTTPS,该站点就可以正常工作。当我这样做时,它也会破坏我的WordPress登录页面。登录页面和管理员都被重写遮盖了。我已经复制了htaccess文件的重要部分。

# Force HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

以后

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^string1/(.*) /wp-admin/$1 [QSA,L]
RewriteRule ^string1(.*) /wp-admin/$1 [QSA,L]
RewriteRule ^string2(.*) /wp-login.php$1 [QSA,L]
RewriteRule ^string2/(.*) /wp-login.php$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

第一次重写在htaccess文件的顶部,第二次重写大约在中间。当我不强制使用https时,用户仍然可以访问该站点的HTTP版本(明显违背了安装SSL的目的)。当用户使用站点的HTTP版本时,由于所有链接都已更新,因此任何单击都会将该用户带到HTTPS版本。我认为问题出在{REQUEST_URI}命令中,导致怪异的重写,因此最终以404结尾。在Chrome或Firefox的网站上,我没有收到任何混合内容警告。

请注意,我不是专业人士,因此请为我保留一些基本知识。谢谢。 :)

1 个答案:

答案 0 :(得分:0)

我将从htaccess中删除强制HTTPS脚本,并清除缓存以进行硬重装。如果仍然需要您使用HTTP版本,那么我想您是混合内容。为此,您可以使用此插件https://wordpress.org/plugins/better-search-replace/,并将所有“ http://”替换为“ https://”。这样,它将搜索网站上所有非https内容(包括您的数据库),并将其替换为https版本。完成之后,请给它一些时间(大约10分钟),然后尝试再次访问该网站。让我知道这是否有效

我想补充一件事。如果转到设置»常规,您的wordpress地址url和站点地址url是什么样的?确保它们都运行https版本。

关于我上面的建议,不使用.htacess函数强制使用https的更简单方法是使用此插件“真正简单的SSL”