某客户告知,企业网站后台管理员的登录密码忘记了,进行密码重设操作,点击邮件中密码重设链接跳转后,提示“您的密码重设链接无效,请在下方请求新链接。”重新输入用户名或电子邮件地址,再次获取新密码,问题复现。 是什么原因导致呢?经过分析,问题原来出在邮件中的重设链接上,我们来看一下邮件当中的链接。 鼠标指着邮件中的链接,注意看浏览器左下方当前链接提示,链接最后面是不是多了一个“右尖括号”? 有趣的是,问题貌似多出现在企鹅系邮箱系统,以下是outlook.com邮箱的网页截图,没有上面所述情况。其他邮箱待测试。 根源找到了,如何解决呢?SSH链接Ubuntu,到网站的根目录,编辑wp-login.php。 找到以下代码。 删除前面的 ‘<‘ . ,以及后面的 > 。 编辑wp-includes/pluggable.php 找到以下代码 同样删除前面的 ‘<‘ . ,以及后面的 > 。 再次操作密码重设,前后的尖括号没有了。 点击重设链接,密码重设页面可以正常显示了。 但小编通过在另一个WordPress网站上测试,以上办法并不凑巧,无论小编如何修改以上两个文件,密码重置邮件中的链接仍然带有尖括号。当然,你可以通过复制链接,粘贴到浏览器地址栏,删除尖括号,再打开链接来处理,但对于一般用户来说还是不方便的。经过一番思索,原来是网站为了保护后台登录地址,防止暴力破解,使用了All In One WP Security & Firewall插件中的“重命名登录页面功能”,更改了默认的后台登录地址所导致。同时也不引用以上所述两个文件了。 我们来做个测试,启用All In One WP Security & Firewall插件,启用“重命名登录页面功能”,输入aaa,如下图,保存设置,WordPress默认的后台登录地址是“网址/wp-admin”,修改后将变成“网址/aaa”。 在修改后的后台登录页面进行密码重设操作,打开邮件,链接如下显示。 点击后,同样显示链接无效。 对比一下未启用“重命名登录页面功能”时,邮件所显示的链接,是默认的wp-login.php。 怎么办?停用“重命名登录页面功能”?网站的安全保护措施还是需要的,总不能杀鸡取卵。 以下使用另一种解决办法,不管有没有使用All In One WP Security & Firewall插件,修不修改wp-login.php和pluggable.php两个文件,此方法也是适用的。 使用WordPress后台的主题编辑器或在服务器上进入当前主题的目录,编辑functions.php文件,在最后添加以下代码。 请注意$msg .= network_site_url开头的那一行代码,由于小编启用了“重命名登录页面功能”,并设置成aaa,所以此处是aaa,可改成你启用“重命名登录页面功能”时所设置的地址。 如没有使用“重命名登录页面功能”,此处应改为默认的wp-login.php。 其中“站点名称”一项也可按实际情况修改。 保存后再进行密码重设测试,收到邮件所示链接如下。 点击重置链接,重置密码页面可以正常显示了。 问题解决!