【问题标题】:Redirecting a URL with an action parameter使用操作参数重定向 URL
【发布时间】:2016-04-26 15:20:49
【问题描述】:

我已禁用 CMS 的密码重置,但是如果有人知道必要的 URL,他们仍然可以得到一个过时的密码重置表单:

www.mysite.com/wp-login.php?action=lostpassword

如果用户手动输入此 URL,我希望该 URL 自动重定向到:

www.mysite.com/wp-login.php

我最终试图阻止 URL 中的操作参数触发密码重置表单。

在这种情况下我对use a 301 redirect 是正确的还是有更可取的方法?

【问题讨论】:

    标签: php wordpress .htaccess redirect


    【解决方案1】:

    我确实会使用 301 重定向,但您不需要链接到的插件。您可以将以下代码添加到您的functions.php

    function disable_lost_password() {
        if ( in_array( $_GET['action'], array('lostpassword', 'retrievepassword') ) ) {
            wp_redirect( wp_login_url(), 301 );
            exit;
        }
    }
    add_action( "init", "disable_lost_password" );
    

    请注意,您还需要检查 retrievepassword 操作。

    【讨论】:

    • 缺少第三个括号,但是是的,这可以正确重定向并且不像插件那样矫枉过正。生成的 URL 包含一个 redirect_to= 参数,该参数导致丢失的密码页面,我认为该页面将反弹到 www.example.com/wp-login.php,反过来,无论我设置什么登录后重定向。 IE。编辑个人资料页面,主页等。我的理解是否正确?
    • 我添加了缺少的括号,谢谢!当有人手动输入 lostpassword url 时,此代码将立即重定向到 /wp-admin url。
    • add_action('init','somefunctionname'); somefunctionname(){/*The code in your answer*/} 会消除将代码添加到functions.php 顶部的需要吗?不是要求,只是好奇。
    • 我找不到能够更新 url 中操作的过滤器。但也许我忽略了它?如果有人知道这样做的过滤器,我很乐意更新我的答案。编辑:我误读了你的评论,初始化钩子非常适合这个。在文档中,他们建议使用这个钩子。我会更新我的答案。
    • 仅供参考:可以使用 isset() 进一步限制:pastebin.com/rYVkAQXN。此外,我刚刚发现login_init 存在。
    猜你喜欢
    • 2023-04-05
    • 2015-06-16
    • 2013-12-20
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2017-01-21
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多