【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](https://qiita-image-store.s3.amazonaws.com/0/168635/590a1245-dddb-b809-05ec-60cbca4c1e71.jpeg)


3.隠しファイルを表示できるように設定する。
>[設定]⇒[非表示のファイルの表示 (dotfiles)]にチェック⇒[Save]
![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/8c8cdd18-578e-e7e8-a0a7-889dcb3bc3ae.jpeg)


4.Wordpressの管理画面を表示するファイル(wp-login.php)のディレクトリを表示する。
>[/home/bluehost]⇒[public_html]
![WS000002-1.jpg](https://qiita-image-store.s3.amazonaws.com/0/168635/01f4f875-99a7-de2c-ed01-281df94fd3f8.jpeg)


5.「.htaccess」を編集する。
>[.htaccess]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒下記内容を追記⇒[変更の保存]
![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/521decdf-7774-4264-60a0-6ef376de53ff.jpeg)
もう一回[Edit]します。
![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/245e23ff-dc1f-4d9b-6fa9-c6f83fa7edc6.jpeg)


Basic認証に必要な設定を追記します。
![WS000004.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/bee28cd5-ae0f-2f32-1e7e-dda39c7d8594.jpeg)


```
●追記したもの
<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を作成](http://www.htaccesseditor.com/#a_basic)
![WS000005.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/2ac2f2c6-c437-ffd8-20a3-d65c109b6dc8.jpeg)


7.「.htpasswd」の作成（認証情報ファイル）
>[/home/bluehost]⇒[public_html]⇒[+ファイル]⇒[新しいファイル名]に「.htpasswd」を入力⇒[Create New File]
![WS000006.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/69d20883-ba25-df3f-9eed-9a7a7031574b.jpeg)


9.手順6で作成し、コピーした認証情報を手順7で作成した「.htpasswd」に貼り付ける。
>[/home/bluehost]⇒[public_html]⇒[.htpasswd]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒手順6の内容を貼り付け⇒[変更の保存]
![WS000007.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/2442eb9c-f95c-3fe3-b182-5b97b795905e.jpeg)


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

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


#参考URL
[[Bluehost] Basic認証を掛ける](http://kihon-no-ki.com/use-basic-auth-in-bluehost)
[Bluehost Web Hosting Help](https://my.bluehost.com/cgi/help/htaccess#password-protect)
[WordPressのログイン画面にBasic認証をかけて二重ロックする](https://memocarilog.info/wordpress/4483)


#つまづいたところ
①「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>
```