web-dev-qa-db-ja.com

紛失したパスワードのフォームとURLを削除する

すべてのユーザーのパスワードリセットを停止しました。

誰かが手動でURLをブラウザに入力した場合、/wp-login.php?action=lostpasswordが何もしないようにする必要があります。

つまり、パスワードリセットフォームを表示したくありません。

URLによって渡されているアクションを無効にすることはできますか?または/wp-login.php?action=lostpassword/wp-login.phpにリダイレクトすることはできますか?

1
Clarus Dignus

こんにちはあなたのfunctions.phpでこれを使用してみてくださいそれはユーザーが失われたパスワードのページにアクセスしようとしたときにログインフォームにユーザーをリダイレクトします:

add_action('init','possibly_redirect'); 
function possibly_redirect(){ 
   if (isset( $_GET['action'] )){  
     if ( in_array( $_GET['action'], array('lostpassword', 'retrievepassword') ) ) {
        wp_redirect( '/wp-login.php' ); exit;
     }
  }
}

またはこの回答から使用されている以下のアプローチに従ってください 詳細をここに回答 @Clarus Dignusのコメントに基づく

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

.htaccess および mod_rewrite を使用できます。

禁止された応答:

RewriteCond %{QUERY_STRING} ^action=lostpassword$ [NC]
RewriteRule ^wp-login.php$ - [F,NC]

Wp-login.phpにリダイレクトします。

RewriteCond %{QUERY_STRING} ^action=lostpassword$ [NC]
RewriteRule ^wp-login.php$ wp-login.php [R=301,NC,QSD,L]

(QSDフラグの場合はApache 2.4.0以降が必要です)

私はこれが古いスレッドであることを知っていますが、私はいくつかの改良点があります。まず、GETやPOSTを使用できるので、$ _ GETではなく$ _REQUESTをチェックします。

次に、あなたのサイトに戻るのではなく、役に立たない場所にリダイレクトします。 ' http://127.0.0.1 'のように彼らがそこにWebサーバを持っていない場合、ボットは少なくとも数秒間応答を待って停止します。これらの問題を解決するために私たちができることは何でも。

1
De Coder