#やること
- Wordpressの管理画面にのみBasic認証をかける
- .htaccessの作成(Basic認証を使う設定を記載する)ドキュメントルートと、wp-adminディレクトリに配置する。
⇒Basic認証をかけたいファイルと同じディレクトリに作成する。 - .htpasswdの作成(Basic認証時に利用するユーザーとパスワードを記載する)
#前提
- Bluehost上で作業を行う
- Wordpressはインストール済み
- Wordpressの管理画面のパスは、/home/bluehost/public_html/wp-login.phpとする
#手順
1.Bluehostのコンソールにログインする。
2.ファイルマネージャーの画面を開く。
3.隠しファイルを表示できるように設定する。
4.Wordpressの管理画面を表示するファイル(wp-login.php)のディレクトリを表示する。
5.「.htaccess」を編集する。
[.htaccess]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒下記内容を追記⇒[変更の保存]
もう一回[Edit]します。
●追記したもの
<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を作成
7.「.htpasswd」の作成(認証情報ファイル)
[/home/bluehost]⇒[public_html]⇒[+ファイル]⇒[新しいファイル名]に「.htpasswd」を入力⇒[Create New File]
9.手順6で作成し、コピーした認証情報を手順7で作成した「.htpasswd」に貼り付ける。
[/home/bluehost]⇒[public_html]⇒[.htpasswd]を選択⇒右クリック⇒[Edit]⇒[Edit]⇒手順6の内容を貼り付け⇒[変更の保存]
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>