WordPress
.htaccess
Basic認証
Bluehost

【Bluehost】Wordpressの管理画面だけBasic認証をかけてみる

やること

  • Wordpressの管理画面にのみBasic認証をかける
  • .htaccessの作成(Basic認証を使う設定を記載する)ドキュメントルートと、wp-adminディレクトリに配置する。
    ⇒Basic認証をかけたいファイルと同じディレクトリに作成する。
  • .htpasswdの作成(Basic認証時に利用するユーザーとパスワードを記載する)

前提

  • Bluehost上で作業を行う
  • Wordpressはインストール済み
  • Wordpressの管理画面のパスは、/home/bluehost/public_html/wp-login.phpとする

手順

1.Bluehostのコンソールにログインする。

2.ファイルマネージャーの画面を開く。

[Advanced]⇒[ファイルマネージャー]
WS000000.JPG

3.隠しファイルを表示できるように設定する。

[設定]⇒[非表示のファイルの表示 (dotfiles)]にチェック⇒[Save]
WS000001.JPG

4.Wordpressの管理画面を表示するファイル(wp-login.php)のディレクトリを表示する。

[/home/bluehost]⇒[public_html]
WS000002-1.jpg

5.「.htaccess」を編集する。

[.htaccess]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒下記内容を追記⇒[変更の保存]
WS000002.JPG
もう一回[Edit]します。
WS000003.JPG

Basic認証に必要な設定を追記します。
WS000004.JPG

●追記したもの
<Files wp-login.php>
AuthType Basic
AuthUserFile /home/bluehost/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "User and Password"
Require valid-user
</Files>
●編集前
# BEGIN WordPress

AddHandler application/x-httpd-ea-php70 .php
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType text/html "access plus 2 hours"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 6 hours"
</IfModule>
Header set X-Endurance-Cache-Level "2"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~bluehost/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~bluehost/index.php [L]
</IfModule>


# END WordPress



●編集後
=============================================================================
# BEGIN WordPress

AddHandler application/x-httpd-ea-php70 .php
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType text/html "access plus 2 hours"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 6 hours"
</IfModule>
Header set X-Endurance-Cache-Level "2"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~bluehqe5/
RewriteRule ^index\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /~bluehqe5/index.php [L]
</IfModule>

# END WordPress

<Files wp-login.php>
AuthType Basic
AuthUserFile /home/bluehost/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "User and Password"
Require valid-user
</Files>


# END WordPress

6.wp-adminディレクトリにも.htaccessを作成。
以下の内容を記載します。

<Files admin-ajax.php>
Satisfy Any
Order allow,deny
Allow from all
</Files>

7.認証情報(ユーザー名とパスワード)の作成

下記ブラウザにアクセス⇒[ユーザー名]と[パスワード]を入力し、[.htpasswdを作成]⇒[.htpasswd]に出力された文字列をコピーする。
.htpasswdを作成
WS000005.JPG

7.「.htpasswd」の作成(認証情報ファイル)

[/home/bluehost]⇒[public_html]⇒[+ファイル]⇒[新しいファイル名]に「.htpasswd」を入力⇒[Create New File]
WS000006.JPG

9.手順6で作成し、コピーした認証情報を手順7で作成した「.htpasswd」に貼り付ける。

[/home/bluehost]⇒[public_html]⇒[.htpasswd]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒手順6の内容を貼り付け⇒[変更の保存]
WS000007.JPG

10.ブラウザでアクセスして動作確認をする。

  • フロント側にBasic認証がかかっていないこと
  • 管理画面にのみBasic認証がかかっていること
  • 設定した認証情報でログインできること

参考URL

[Bluehost] Basic認証を掛ける
Bluehost Web Hosting Help
WordPressのログイン画面にBasic認証をかけて二重ロックする

つまづいたところ

①「files wp-login.php」が効かない
 ⇒Webサイト全体に認証が走ってしまったりしていました。

解決策
RewiteCondとRewriteRuleをコメントアウトしないと、読み込んでくれませんでした。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~bluehqe5/
RewriteRule ^index\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /~bluehqe5/index.php [L]
</IfModule>

# END WordPress

<Files wp-login.php>
AuthType Basic
AuthUserFile /home/bluehost/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "User and Password"
Require valid-user
</Files>

②管理画面だけ認証が効かない。
 ⇒フロント側に認証がかかったり、レイアウトが崩れたり、管理画面自体が表示されなくなる事象が発生

解決策
wp-adminディレクトリに、下記内容の「.htaccess」を作成

<Files admin-ajax.php>
Satisfy Any
Order allow,deny
Allow from all
</Files>