ホームページを作って数日すると異常な数のアクセスがありました。
解析ソフトでみると、ほとんどが海外からのアクセス。不明の物も。
.htaccessを使って日本国内で使われているIPアドレスのみを許可という文を入れることでそれ以外のIPは拒否することができることが分かりました。
けれどなぜか自分でもアクセスできなくなり「500 Internal Server Error(CGIのエラーや『.htaccess』の設定ミスの場合に表示されるエラーページ)」が表示。
特定のIPアドレスを拒否する方法の種類、その通りにやった時にエラーがでる場合の解決方法について紹介します。
≪目次≫
1、.htaccssを使って制限する方法を紹介してるサイト2つ紹介・初心者向けに補足説明
2、やってみたが制限されない
3、error500が出る原因・解決法
1、まず.htaccessを使って制限する方法紹介
この二つのサイトどちらをみれば流れは分かります。
①サイトへの特定のホスト・IPの許可と制限(ロリポップサイト)、
②ワードプレスの管理画面にアクセスする制限を国内のみにする方法!(別サイト)
①の説明補足
①はスパムコメントや無駄なアクセス履歴が嫌でサイトへのアクセス自体を拒否するものです。
分かっている特定のIPだけを拒否の場合となっていますが、国内以外はすべて拒否の場合は②の方に入り、日本国内に割り当てられたIPアドレスを取得して行ってください。
グーグルの検索ロボットを許可するなら②だけでは足りないようなのでこちらでコピペして.htaccess ファイルを作成した方がよさそうです。
詳しくないので他のサイトで確認をお願いします。
「.htaccess」を入れる位置を、公開フォルダ(データが入ってるフォルダ)と並べていれます。
wp-adminなどが出てくる前。
このサイトの公開フォルダはドメイン名を取って(marurun.red)にしてあるのでこんな感じ。
この位置に入れれば管理画面だけでなくサイト事態に入れなくなるのでアクセス解析にも載ってこなくなります(たまに通ってしまうものもありますが)。
②の説明補足
②は管理画面にのみ入れなくするものです。
普通はパスワードとか入れないと入れないものですが、ハッカーがパスワードを推測して入ろうとしたりします。
そういうのも完全に防ぐためにパスワードを入れる画面にも入れないように管理画面へのアクセス自体を決まったIPアドレスのみに制限しておくものです。
そのため自分も、登録しているIPアドレス以外からだと管理画面に入れません。
「.htaccess」を入れる位置は公開フォルダを開いてすぐの「wp-includes」の下です。ここに入れると管理画面へのアクセスだけ阻止できます。
2、やってみたが制限されない
管理画面入るのを自分のパソコンのIPのみに制限したのに、スマホなど他のIPからも入れてしまう。
試しにやってみたところ制限したはずのIPからも入れてしまいました。
その原因は、一度管理画面に入ってしまっていると、しばらくはその記録(キャッシュ)がその機種に残っているので入れてしまうとのこと。
一度も管理画面に入ったことのないスマホやパソコンなどからはしっかり制限されていました。
けれどもキャッシュで開けているだけの場合、数日すればもう入れなくなります。
スマホは家にいる時はワイファイで使っているため、パソコンとIPが同じになります。
そのため、その状態でログインすれば、翌日くらいはIPが違う外での環境でも管理画面に入れます。
けれど、家にいる間に管理画面につないでいないと、外でいきなり管理画面い入ろうとしても、「制限されています」と出て入れません。
制限のやり方があっているか試すときには、キャッシュが残っていない機種から試さないとわかりません。
または、キャッシュを消してから試してと分かります。
3、上の方法でやったがerror500が出る原因
ここからがこの記事の本題です。
『.htaccessファイルは文字コードUTF-8で作成されており、「BOM(ByteMarkOrder)」が付加されいた』
ロリポップに問い合わせるとこれが原因だそうです。
これは「.htaccess」の中身を作る時の文字コードの設定がいけないとのこと。
②のサイトを見ると、『文字コードを「UTF-8」に設定する』と書いてあるのですが、これをするとエラーが起きるとのこと(ロリポップの場合だけなのかもしれませんが)。
「UTF-8(BOMを付加)」ではなく「UTF-8N(BOMが付加されていない状態)」にするとエラーがおきないとのこと。
『ロリポップ!FTP』で新規作成から「.htaccess」を作ればBOMは付加されないのですが、それ以外のテキストエディタなどで作る場合は設定によっては付加されるとのこと。
その中でも絶対だめなのが、もともとパソコンに入っている「メモ帳」を使って「.htaccess」を作る時。
普通のメモ帳では「UTF-8N」の選択肢がないので、自然と「UTF-8(BOMを付加)」の設定になってしまうそうです。
私もテキストエディタなどをインストールしておらず、普通のメモ帳を使っていたのでBOMが付加されていたそうです。
しかたないのでTeraPadをインストールして、そちらで「.htaccess」を作り、「UTF-8N」に設定したらできました。
ロリポップ!FTPですればいいのですがロリポップ!FTPはたびたびログインできなくなるんですよね。
TeraPad便利です。
同じようなことで困っている方、ぜひ試してみてください。