KakapoWP KakapoWP
ヘルプセンター/Security/ログイン URL の変更:設定、確認、元に戻す

ログイン URL の変更:設定、確認、元に戻す

対象: Kakapo Security· 4 分で読めます

事前に満たしておくこと

初期設定ではこの機能はオフで、ひとりでにオンになることはありません。次の 3 つがあると移設そのものができず、スイッチはロックされたままで理由が表示されます: (1) wp-config.php に非常停止の define( 'KWPSEC_LOGIN_SLUG_OFF', true ); が書かれている。(2) その設置がマルチサイトネットワークである。この場合はすべてのサイトが 1 つのログインを共有するため、移設はネットワーク全体で行う必要があります。(3) パーマリンクが「基本」になっている。この場合、/gartentor のような経路は PHP にまったく届かず、Web サーバーが手前で 404 を返します。先に 設定 › パーマリンク で別の構造に変更してから進めてください。

経路を選択する

使えるのは 3 〜 40 文字です: 小文字、数字、ハイフン、アンダースコア。スラッシュ、ウムラウト、ピリオドは使えません。大文字は小文字に変換されます。保存時に 4 つのチェックが走ります: よくあるボットのリストにある名前(login、wp-login、admin、wp-admin、anmelden、dashboard など)は、数分で見つかってしまうため拒否されます。WordPress の設置内に同じ名前のファイルまたはディレクトリがすでにある場合も拒否されます — PHP に問い合わせが行く前に、Web サーバーがそれを配信してしまうためです。wp-json、feed、author、category、sitemap、favicon といった予約されたルートはロックされています。さらに、その経路にすでに投稿や固定ページがある場合も、あとでそれらに到達できなくなるため拒否されます。保存しただけの経路は、まだ効いていません — 移設そのものを追加でオンにして、はじめて有効になります。

オンにする: そのとき自動的に起きること

スイッチを切り替えると設定が保存され、そのあとサーバーは自分自身の設置に対して実際の HTTP リクエストを 2 回送ります: 新しいアドレスへ 1 回、古いアドレスへ 1 回です。各リクエストの時間制限は 8 秒で、リダイレクトは追わず、Cookie も送りません。本当にログインページが応答したことの証拠として、返ってきたテキストの中から id="loginform" と name="log" を探します。新しいアドレスが HTTP 404 を返し、ログインフォームも含まれていない場合、変更はただちに取り消され、元の状態が復元されます — この場合、nginx では try_files の行が、Apache では .htaccess が足りないことがほとんどです。チェックが通ると、プラグインは新しいアドレスをプレーンテキストのメールとして、登録された通知用アドレス(未設定の場合は管理者の電子メールアドレス)へ送ります。メールには wp-config.php 用の非常停止の行も書かれています。応答は、wp_mail() がメッセージを受け付けたかどうかを包み隠さず伝えます — 受け付けていない場合は、いまのうちにアドレスを控えておいてください。操作ログにもエントリーが 1 件書き込まれます。

運用で変わること

新しい経路では、オリジナルのファイル wp-login.php が読み込まれます。作り直したものではありません — WordPress のセキュリティ更新がそこにただちに効きます。ログインしていない訪問者にとって、/wp-login.php は存在しないアドレスと同じように振る舞います: リクエストは使われていない経路に書き換えられ、独自のエラーメッセージなしに、テーマがごく普通に 404 として表示します — 独自のメッセージを出せば、ここに何かが隠されているという手掛かりになってしまうからです。ログイン済みの人はこれまでどおり通れます。これは意図した動作です。ログインしていない訪問者が /wp-admin/ を開くと、ログイン画面ではなく 302 でトップページへ送られます。そうしないと Location ヘッダーに新しいアドレスが載ってしまうためです。admin-ajax.php、admin-post.php、load-styles.php、load-scripts.php は引き続き到達できるようにしてあり、お問い合わせフォーム、カート、レビューはそのまま動きます。WordPress が site_url()、network_site_url()、wp_redirect() を通じて生成するアドレス — wp_login_url()、wp_logout_url()、wp_lostpassword_url()、フォームの action 属性 — は、すべて自動的に新しい経路を指します。

締め出されたとき、どこかで引っかかったとき

第 1 の方法: ブラウザーに有効なログイン Cookie が残っている間は、/wp-login.php と /wp-admin/ にこれまでどおり到達できます。第 2 の方法: 切り替えの際に届く電子メールにアドレスが書かれています。第 3 の方法: wp-config.php に define( 'KWPSEC_LOGIN_SLUG_OFF', true ); を書き加えます — これでただちに wp-login.php が再び有効になり、その行を削除するまでスイッチはロックされたままになります。管理画面にはさらに 2 つのボタンがあります: 1 つは確認用の呼び出しをやり直し、HTTP コード、応答時間、旧アドレスのステータスを表示するもの、もう 1 つはアクセス情報のメールを再送するものです。確認用の呼び出しが HTTP コードではなくネットワークエラーを返す場合、たいていはホスティング事業者側でループバックが塞がれています — アドレスが機能しないという意味ではありませんので、一度ご自身で開いてみてください。他のプラグインのリンクが wp-login.php のままになっている場合、そのリンクはそこに固定的に書き込まれていて site_url() を通っていません。書き換えられるのは、これらのフィルターを通るものだけです。元に戻すのは、いつでも同じスイッチで行えます。

この記事は役に立ったか?