WordPressのログインURLは世界共通です。
WordPressで構築されたWebサイトなら、誰でもログインURLがわかってしまいます。
ログインURLがわかるのはセキュリティとして好ましくありません。
WordPressのログインURLの変更を検討しましょう。
今回の記事では、WordPressのログインURLを変更すべき理由や、ログインURL変更が可能なプラグイン、それ以外の変更方法についてわかりやすく解説します。
適切にWordPressのログインURLを変更し、セキュリティを向上させましょう。
WordPressのログインURLを変更するべき理由
WordPressは世界一シェアの多いCMSです。
定期的にアップデートがあり、セキュリティにも気が配られています。
しかし、ログインURLがそのままでは、せっかくのセキュアなWordPressも安全性が低くなります。
WordPressのログインURLを変更するべき理由について解説します。
WordPressの初期ログインURLは?
WordPressの初期のログインURLは以下です。
- https://xxx.com/login/
- https://xxx.com/admin/
- https://xxx.com/wp-admin/
- https://xxx.com/wp-login.php
上記のいずれのURLでもログイン画面を表示できます。
なお、正規のログインURLは4.の「wp-login.php」です。
ログインURLは初期設定のままでは危険!
WordPressのログインURLは全世界共通です。
WordPressで運営されているサイトは、ログインURLを変更していない限り、すべて上述した4つのURLでログイン画面が表示できます。
そのため、セキュリティ上の危険性が指摘されています。
ログインURLは家の勝手口のようなもの。
勝手口の位置がわからなければ、入られる心配もありません。
セキュリティを万全にするために、ログインURLの変更を検討しましょう。
WordPressでログインURLを変更する3つの方法
WordPressでログインURLを変更する方法は3つあります。
- プラグイン
- .htaccess
- function.php
それぞれの方法の特徴について解説します。
自身のWebサイトに最適な方法を選択しましょう。
プラグイン
WordPressのログインURLを変更する方法で、もっとも手軽なのがプラグインの導入です。
WordPressには6万種類近いプラグインがリリースされており、さまざまな機能をWordPressに追加できます。
プラグインによって追加できない機能は、ほぼないといって過言ではありません。
WordPressのプラグインには、ログインURLを変更するプラグインもあります。
代表的なログインURL変更プラグインは以下です。
- WPS Hide Login
- SiteGuard WP Plugin
- Login rebuilder
- XO Security
中でも、WPS Hide Loginがもっともダウンロード数が多く人気です。
それぞれのプラグインの特徴を後ほど紹介します。
また、WPS Hide Loginのインストール方法や設定方法も後述します。
.htaccess
プラグインが多くなると管理が面倒だったり、WordPressの動作が重くなったりします。
そこで、プラグインを使わずにWordPressのログインURLを変更する方法を紹介します。
プラグインを使わない方法の1つめは.htaccessの変更です。
.htaccessとは、Webサーバーの動作をディレクトリ単位で制御する仕組み。
Apacheを始めLiteSpeedなどいくつかのWebサーバーで互換性があります。
.htaccessの記述方法については後述します。
function.php
新しくログインファイルを作ってしまい、function.phpで制御する方法もあります。
ただし、function.phpを使う方法は子テーマで行いましょう。
親テーマのfunction.phpは、テーマの更新時に上書きされる危険性があります。
上書きされると設定がデフォルトに戻り、せっかくの変更が白紙に。
function.phpでログインURLを変更する方法も後述します。
WordPressのログインURLを変更できるプラグイン
WordPressのログインURLを変更できるプラグインを紹介します。
WPS Hide Login
WPS Hide Loginは100万ダウンロード以上されている人気のプラグインです。
非常に軽く、簡単で安全にWordPressのログインURLを変更できます。
WPS Hide Loginの使い方は、インストールしてログインURLを設定するだけのシンプルな手順です。
今まで.htaccessやfunction.phpを使い、手動で変更していたのがバカバカしくなるほど簡単。
なお、ログインURLがわからなくなった場合、サーバー側でプラグインを削除すれば元に戻ります。
FTPで接続して「wp-content/plugins/」内にあるWPS Hide Loginのフォルダを削除しましょう。
WPS Hide Loginの使い方については後述します。
SiteGuard WP Plugin
SiteGuard WP Pluginは日本で開発されたプラグインです。
設定ページは日本語に対応しており、シンプルで簡単な操作が特徴です。
SiteGuard WP Pluginはインストールして有効化すると、自動的にログインページのURLを「login_(5桁の乱数)」に変更します。
管理画面の左サイドバー「SiteGuard」→「ログインページ変更」から、新しいログインページをブックマークしましょう。
また、新しいログインURLは、管理者に登録されているメールアドレス宛に通知されます。
もしブックマークし忘れ、そのメールも紛失した場合は、FTPで.htaccessファイルをダウンロードして開いてください。
.htaccess内の以下の行にログインURLが記載されています。
RewriteRule ^login_xxxxx(.*)$ wp-login.php$1 [L]
「login_xxxxx」の部分が、ログインURLの末尾です。
ログインURLは「https://ホスト名/login_xxxxx」となります。
Login rebuilder
Login rebuilderは独自のログインページをサイトに配置し、ログインURLを変更するプラグインです。
Login rebuilderではいくつかの設定が可能です。
- 無効なリクエストがきたときの応答(403、404、トップページでリダイレクトなどが選べる)
- 新しいログインURLを自分で作れる
- 無効なリクエストがきたときにログの保存ができる
注意点としては、Login rebuilderを削除してもサイトに配置したログインページは消えません。
そのため、使用をやめるならログインページ用に作ったファイルも削除しましょう。
XO Security
XO Securityは.htaccessに書き込まず、ログインURLを変更するプラグインです。
外部サービスを一切使用しないので、安全で軽量。
ログインURLを書き換える以外に、XO Securityはさまざまな設定ができます。
- ログインのログを記録
- ログインの試行回数を制限
- ログイン時に管理者にメールを送る
- ログインできる言語を制限
- WordPressのマルチサイト対応
多機能でさまざまなことが設定できるため、セキュリティ向上を目指す方におすすめです。
「WPS Hide Login」でログインURLを変更する方法
WPS Hide LoginでログインURLを変更する方法を解説します。
インストール
まず、WPS Hide Loginをインストールしましょう。
インストール手順は以下です。
- 「プラグイン」→「新規追加」を開く
- 検索窓に「WPS Hide Login」を入力
- WPS Hide Loginが表示されるので「今すぐインストール」をクリック
- インストールしたら「有効化」をクリック
インストールした後、設定は「設定」→「WPS Hide Login」から行います。
もしくは、「設定」→「一般」の最下部からでも可能です。
設定方法
WPS Hide Loginで設定する箇所は2つだけです。
「ログインURL」「リダイレクトURL」を設定しましょう。
ログインURLは好きなURLを半角英数字で入力してください。
リダイレクトは404リダイレクトのほかに、トップページへのリダイレクトもありでしょう。
設定を入力したら「変更を保存」をクリックしてください。
以下のようにログインURLが表示されるので、ブックマークしておきましょう。
ログインURLを変更したいだけなら、設定がシンプルで.htaccessも変更しないWPS Hide Loginがもっともおすすめです。
.htaccessでログインURLを変更する方法
.htaccessファイルを書き換えてログインURLを変更する方法を解説します。
.htaccessのソースコード
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?xxx [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /not_found [R,L]
RewriteRule ^dashboard/?$ /not_found [R,L]
RewriteRule ^register/?$ /wp-login.php?xxx&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)https://domain.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)https://domain.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)https://domain.com/enter
RewriteCond %{HTTP_REFERER} !^(.*)https://domain.com/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)https://domain.com/register
RewriteCond %{QUERY_STRING} !^xxx
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?xxx [R,L]
</IfModule>
ソースコードの変更点
上記のソースコードの「xxx」はログインURLの末尾です。
任意の英数字の文字列に変更しましょう。
「https://domain.com/」は自身のドメイン名に変更してください。
上記の場合、ログインURLは「https://domain.com/wp-login.php?xxx」になります。
書き換えは、テキストエディタの置き換え機能を使いましょう。
.htaccessファイルをサーバーにアップしたら、動作確認を行ってください。
function.phpでログインURLを変更する方法
function.phpファイルを書き換えてログインURLを変更する方法を解説します。
wp-login.phpの代替のPHPファイルを用意
新しいログインURLになるPHPファイルを用意してください。
たとえば、「xxx.php」というファイルを用意すると、ログインURLは「https://domain.com/xxx.php」になります。
xxx.phpのファイル内容は以下をコピペしてください。
<?php
define( 'LOGIN_CHANGE', sha1( 'keyword' ) );
require_once './wp-login.php';
?>
このファイルは、wp-login.phpと同じ階層に置きましょう。
function.phpへの記述
次に、function.phpに以下の記述を追加します。
define( 'LOGIN_CHANGE_PAGE', 'xxx.php' );
add_action( 'login_init', 'login_change_init' );
add_filter( 'site_url', 'login_change_site_url', 10, 4 );
add_filter( 'wp_redirect', 'login_change_wp_redirect', 10, 2 );
// 指定以外のログインURLはトップページへリダイレクト
if ( ! function_exists( 'login_change_init' ) ) {
function login_change_init() {
if ( !defined( 'LOGIN_CHANGE' ) || sha1( 'keyword' ) != LOGIN_CHANGE ) {
wp_safe_redirect( home_url() );
exit;
}
}
}
// ログイン済みか新設のログインURLの場合はwp-login.phpを置き換える
if ( ! function_exists( 'login_change_site_url' ) ) {
function login_change_site_url( $url, $path, $orig_scheme, $blog_id ) {
if ( $path == 'wp-login.php' &&
( is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false ) )
$url = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $url );
return $url;
}
}
// ログアウト時のリダイレクト先の設定
if ( ! function_exists( 'login_change_wp_redirect' ) ) {
function login_change_wp_redirect( $location, $status ) {
if ( strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false )
$location = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $location );
return $location;
}
}
function.phpはFTPでサーバーにアップしましょう。
サーバーにアップしたら動作確認を行ってください。
まとめ
WordPressの初期ログインURLは誰にでもわかります。
そのため、セキュリティとしては心許なく危険性が高いです。
ログインURLを変更する方法は「プラグイン」「.htaccess」「function.php」の3種類があります。
3つの方法の中でもっとも手軽なのはプラグインです。
ログインURLを変更するプラグインはいくつかリリースされていますので、自身に最適なプラグインを選択しましょう。
.htaccessやfunction.phpを変更する方法は、初心者には難しく、手間もかかります。
親テーマを使っている場合、WordPressの更新で変更が消えてしまう可能性も。
適切な方法を選択し、ログインURLを変更してセキュリティ向上を目指しましょう。