【.htaccess】WordPressの管理画面をプラグインなしでurl変更を行う

ブログ

wordpressの管理画面は初期設定のままですと、URLが想定されてしまい脆弱です。

例えば、test.comというドメイン名の場合、
https://test.com/wp-login/が初期の管理画面になってしまいます。

今回は、パラメータ値を知っている人しかアクセス出来ないように設定を行います。


.htaccessファイルのバックアップを取る。

ドメイン(このサイトの場合は、toaruse.com)直下にある、
.htaccessファイルに追記することで設定を行います。

.htaccessファイルは、Apacheウェブサーバーで使用される設定ファイルで、
特定のディレクトリやそのサブディレクトリに適用される設定を記述するためのものです。

例えば、.htaccess.bakなどファイル名を変えてバックアップを取得しましょう。
万が一、設定に不備があった場合、バックアップファイルから元に戻します。

.htaccessファイルに追記を行う。

下記、記述を.htaccessファイルの最下部に追加してください。
ただし、2か所だけ利用する環境に合わせて変更してください。

①parameterをお好きな文字列に変更してください。
 この文字列を用いてログイン画面に遷移します。

②domain.comを自身のドメイン名に変更してください。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?parameter [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?parameter&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?parameter [R,L]
RewriteRule ^register/?$ /wp-login.php?parameter&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/enter
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/register
RewriteCond %{HTTP_REFERER} !^(.*)domain.com/dashboard
RewriteCond %{QUERY_STRING} !^parameter
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?parameter [R,L]
</IfModule>

上記コードでは、下記を実施しています。
ログイン状態の判定: wordpress_logged_in_ クッキーでユーザーがログインしているか確認。

未認証ユーザーの制限: ログインしていないユーザーが管理画面やログインページにアクセスできないようにする。

リダイレクト処理: 特定のURLパターンで適切なページに誘導。

セキュリティ強化: 不正アクセスを防ぐため、許可されていないリクエストを /not_found に誘導。

管理画面へのログインを確認する。

今までの管理画面の語尾に?parameterと設定したパラメータを設定することで、
管理画面へログインできることを確認しましょう。
・https://domain.com/wp-login.php?parameter

また、管理画面へパラメータなしで遷移できないことを確認出来たら、
設定完了です。

タイトルとURLをコピーしました