这个问题产生的原因是 WordPress 程序源码有个bug,源码加的有“<> ”这两个符号,前面这个符号没关系。
但是在后面的话,地址在邮箱中>会被认为是目标站点地址的一部分。
url后面的“>”符号没有被解析成entity而是添加到url中了,这样也就倒是login参数被多加了一个字符。于是导致wp-login程序返回一个错误提示“您的密码重设链接无效,请在下方请求新链接。”
访问过去后连接自然就不对。我们下面就是删掉这两个符号。
第一个文件:/wp-login.php
然后查找“wp-login.php?action=rp&key=”,然后我们会看到一个搜索结果。
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";
我们将其修改为:
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
修改内容是network前面删除了 ‘<‘ .后面末尾处只删除>即可。
第二个文件:/wp-includes/pluggable.php
查找“wp-login.php?action=rp&key=”,然后我们会看到一个搜索结果。
原文件代码如下:
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";
我们将其修改为:
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";
修改内容是network前面删除了 ‘<‘ .末尾同样是只删除> 即可。
修改完以上两处文件保存即可。