我正在将一个 Wordpress 网站迁移到完全 https://
,但我在登录页面上遇到问题。
登录页面本身正在加载 https://
方案,但表单操作指向不安全,http://
页面的版本,这导致它简单地重定向回 https://
版本(我假设这是因为我的 .htaccess
正在将 http 流量重定向到其对应的 https。)
在wp-login.php中,下面的代码设置了表单 Action :
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
看起来,有问题的功能是site_url()
函数,因为它返回 http://
网站版本。
我查看了函数本身,函数调用是按以下顺序进行的:
site_url -> get_site_url -> set_url_scheme -> apply_filter -> *return*
通过这个调用堆栈跟踪我的方式,我注意到唯一一次方案被设置回 http://
是在调用 apply_filter 函数时。
我明确设置了site_url( 'wp-login.php', 'https')
,甚至返回一个 http://
方案。
我希望有人知道这里发生了什么,因为我不明白为什么 Wordpress 不允许我使用 https://
为了这。它似乎在几乎所有其他地方都有效,因为我的 css 和 js 的所有相关链接都在加载 https 版本。
注意:我设置了define('FORCE_SSL_ADMIN', true);
和我的 wordpress site_url
和 home_url
被设置为他们的 https://
选项表中的版本。
最佳答案
这个问题的根源是我们的供应商留下的一个 mu-plugin,但应该被删除。无论如何,这里的教训是始终检查您的插件。
关于php - 无法获取 Wordpress 的 apply_filters ('site_url' ) 以返回 https 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31616799/