.htaccessでベーシック認証・IPアドレス制御・リダイレクトする方法
サーバーに.htaccess(エイチ・ティー・アクセス)という特殊ファイルを設置すると、アクセス制限・ユーザー認証・自動転送(リダイレクト)・エラーページの設定などサイトに特殊機能を設置することができます。
特殊ファイルと言っても、テキストエディタで簡単に作成することができますが、記載するコードに1文字でも間違いがあったり、設置する場所を間違えたりすると正常に機能しません。
初心者でも間違えることなく、簡単に.htaccessファイルを作成する方法を紹介します。
目次
1 .htaccessでできること
2 テキストエディタを準備する
3 .htaccessのルール
3-1 .htaccessの保存形式と文字コード
3-2 コメントの入力方法
3-3 コードの終わり方
3-4 アップロードする時の転送モード
3-5 .htaccessの適応範囲と優先順位
3-6 アップロードした.htaccessが有効になるタイミング
3-7 その他
4 .htaccessに記述した制御が正常に作動しない時は?
5 初心者でもすぐにできる.htaccessに記述する制御コード
5-1 .htaccessや.htpasswdなどを外部から見られないようにする
5-2 ファイル一覧・ディレクトリ一覧の作成を拒否する
5-3 エラーページ(HTTPステータスコード)へ転送する
5-4 特定のIPアドレスからのアクセスを拒否(許可)する
5-5 リダイレクトを作成する (※変更しました)
5-6 ベーシック認証をかける
5-7 wp-config.phpファイルを外部から見えないようにする (※追記しました)
6 絶対に.htaccessに記述しておくべきコードはどれ? (※追記しました)
不具合は修正されました
テキストモジュールやプレーンテキストモジュールにおいて、?、!、<、>などの特殊文字が正規表現でエスケープできない不具合が発生していましたが、Themifyの開発チームによりバグは修正されました。
写真で代用していたコードは正常に表示されているので、コピペして活用してください。
1 htaccessでできること
.htaccessは、多くのWebサーバーで使用されているApache(アパッチ)を制御するファイルの1つです。
Apacheの制御は、本来httpd.confに記載されていますが、このファイルはサーバー全体の制御を行っているため、個別のユーザーが変更することができません。そのため、レンタルサーバーの利用者は、.htaccessを格納することによりWebサーバーの設定を一部変更して対応します。
サーバー内に.htaccessを設置すると様々な設定をすることができます。
・特定のディレクトリにサクセスしたらパスワード認証をさせる。
・URLアドレスを変更したので、新しいURLに転送(リダイレクト)したい。
・不正ログインを試みてくる相手のアクセスを拒否したい。
などなど。
レンタルサーバーによっては、管理画面から設定できる項目もありますが、リダイレクトや細かなアクセス拒否などは自分で記述する必要があります。
初心者でもできるだけ簡単に.htaccessを作成する方法を紹介するので必要に応じて設置してください。
なお、すべてのレンタルサーバーが.htaccessを設置できるとは限りません。レンタルサーバーの仕様詳細に.htaccessの設置の可否が記載されているのでレンタルサーバーを借りる前に確認することをお勧めします。なお、私が推薦している初心者にも使いやすいレンタルサーバーは.htaccessの設置ができるので参考に価格やディスク容量など比較検討してみてください。
参考:「初心者必見!レンタルサーバーの種類と選び方」
2 テキストエディタを準備する
.htaccessを作成するためには、テキストエディタが必要になります。
テキストエディタとは、テキストファイルを作成するためのソフトのことで、Windowsのメモ帳もテキストエディタの一種です(メモ帳は「UTF-8 BOMあり」でしか保存できないため使用しないでください)。
有料のテキストエディタもありますが、プログラミングをする訳ではないので無料のテキストエディタを利用することで十分です。
作成した.htaccessファイルはFTPソフトでサーバーにアップロードします。
まだ、テキストエディタやFTPソフトを準備していない方は、こちらから準備してください。
FTPソフトの設定に関しては、レンタルサーバーのマニュアルを確認してください。
3 .htaccessのルール
.htaccessに関していくつかの約束事があります。
まずはその約束事から説明します。
3-1 .htaccessの保存形式と文字コード
保存する形式
必ず「テキスト形式(プレーンテキスト)」で保存してください。コードを作成する.htaccessにコピペする場合も同様に「テキスト形式(プレーンテキスト)」で貼り付けてください。「リッチテキスト形式」は余分な情報が付加されることがあるので使用しないでください。
文字コードと改行コード
文字コード:「UTF-8(BOMなし)」(テキストエディタによっては「UTF-8N」と表記)
改行コード:Windows「CR+LF」
Mac「CR」
UNIX「LF」
入力する文字はASCII文字(英数記号文字)のみ
としてください。どのテキストエディタでも環境設定などの項目から変更可能です。
3-2 コメントの入力方法
何を目的としたコードかわかるようにコメントを入力する場合は、行の先頭に「#(シャープ)」を入力するとその行はコメントとして扱われますが、ACSII文字のみですから日本語の入力はしないでください。
3-3 コードの終わり方
制御をかけたいコードの終わり方は、必ず改行して空の行にしてください。.htaccessに記述した最後のコードも同様に改行して空の行にしてください。
〇〇〇〇〇
(改行して何も入力していない行)
△△△△△(次のコード)
△△△△△
(改行して空の行にして保存)
3-4 アップロードする場合に転送モード
FTPソフトでサーバーにアップロードする場合は、アスキーモードで転送してください。FTPソフトの設定画面で転送モードの変更ができます。
3-5 .htaccessの適応範囲と優先順位
.htaccessは、ファイルを置いたディレクトリ配下のすべてが適用対象になります。
①のpublic_htmlディレクトリ直下にファイルを置いた場合、 の色に含まれるディレクトリすべてが適応範囲になります。
②のwordpress1ディレクトリ直下にファイルを置いた場合は、 の色に含まれるディレクトリすべてが適応範囲になります。ですから、wordpress1のディレクトリに適応されるファイルは①と②のファイルの内容が対象となり、wordpress2のディレクトリに適応されるファイルは①のファイルのみとなります。
③のwp-contentディレクトリ直下にファイルを置いた場合は、 の色に含まれるディレクトリすべてが対象になるので、wp-contentのディレクトリに適応されるファイルは①②③のファイルとなります。
④のlanguagesディレクトリ直下に置いた場合は、languagesディレクトリに適応されるファイルは①②③④のファイルの内容が適応されます。
同じ制御を行う記述で結果が異なる場合は、より深い層に置かれるファイルの記述が適応されます。
例えば②のファイルに「アクセスを拒否する」、③のファイルには「アクセスを許可する」と相反する記述があるとします。
この場合、 色の部分にあるディレクトリは「アクセスを拒否する」が適応され、 色の部分にあるディレクトリは「アクセスを許可する」が適応されることになります。
.htaccessを置く位置と優先順位はとても重要です。
「アクセス拒否」したつもりが「アクセスを許可」になっていた なんて事がないようにしっかり理解しておいてください。
3-6 アップロードした.htaccessが有効になるタイミング
.htaccessをサーバーにアップロードした瞬間から記述したコードが実行されます。記述したコードにエラーがある場合は、コードが無視(何も起こらない)されたり、サーバーエラーが発生してエラーコード500が表示(サイトが表示されない)されたりします。
.htaccessをアップロードした時は、すぐにサイトを確認してエラーが発生していないか、目的の制御ができているか確認してください。
.htaccessファイルは、ほとんどのレンタルサーバーでワードプレスをインストールするとルート直下に作成されています。テーマやプラグインを有効化すると必要に応じて.htaccessに追記していきます。既存の.htaccessにコードを追加する場合は、コピーを作成しておきすぐに元に戻せるようにしてください。
3-7 その他
レンタルサーバーによっては、レンタルサーバーの管理画面からIPアドレスで拒否したり、ベーシック認証を設定できるところもあります。大変有り難い機能なのですが、パスワードを変更したり、制限を解除したりすると.htaccessが上書きされて自分が追加したコードが消えてしまう場合がありますのでレンタルサーバーのマニュアルを確認することをお勧めします。
4 「.htaccess」に記述した制御が正常に作動しないときは?
.htaccessは、サーバーにアップロードしたらすぐに記述した制御が実行されます。
アップロードしても、.htaccessに記述した項目が無視されたり、Internal Server Error 500 が表示される場合は、何かが間違っています。
よくある間違いの例
・.htaccessのファイル名に誤りがある
⇒.(ドット)htaccessと半角で入力されていない
⇒前後にスペースが混ざっている
・記述する構文に誤りがある
⇒[files]を[file]になっているなど入力に誤りがある
⇒余分なスペースが入っている
⇒全角文字が混ざり込んでいる
⇒URLやパスの指定間違いがある
・記述したコードの最後を改行して空の行で終わらせていない。
・アップロードする場所が間違っている
・.htaccess作成時の改行コードに誤りがある
・アップロード時の転送方法(アスキーモード)に誤りがある
・アップロード後のファイルパーミッションが604になっていない(レンタルサーバーによっては644を推奨しているところもあります。)
レンタルサーバーのマニュアルを確認してください
などです。
.htaccessは、アップロードした瞬間から記述した制御が有効になるので、すぐに正常に(意図した制御をしているか)動作確認をしてください。
5 初心者でもすぐにできる.htaccessに記述する制御コード
5-1 .htaccessや.htpasswdなどを外部から見えないようにする
.htaccessは非常に重要なファイルです。
ブラウザーで外部から見られないように対策します。
5-2 ファイル一覧・ディレクトリ一覧の作成を拒否する
ファイル一覧やディレクトリ一覧が表示されないように設定されているレンタルサーバーも多くあります。
一覧の作成が許可されているか確認する方法は、index.htmlのないディレクトリに接続して(例えばhttp://ドメイン/wp-content/languages/」を付けて実行してください。接続権限がないことを示す403エラーが表示されればレンタルサーバー側で対策されています。逆にディレクトリの一覧が表示されたら対策されていないので次のコードを記載してください。(よく分からなければ記載しておきましょう。)
5-3 エラーページ(HTTPステータスコード)へ転送する
インターネットでいろいろなサイトを見ていると、「ページが存在しません。404」と表示されたことがあると思います。
あの「404」という数字が、サーバーからのレスポンス状態を表すもので、HTTPステータスコードと言われるものです。(ウィキペディアでステータスコードを調べる)
数字には意味があり代表的なものは
100番台 : リクエスト処理中
200番台 : リクエスト処理成功
300番台 : リダイレクト処理
400番台 : クライアントエラー(423番まである)
400:不正リクエスト
401:認証エラー
403:アクセス禁止
404:NotFound
500番台 : サーバーエラー(510番まである)
500:インターネットサーバーエラー
503:サーバー過負荷
509:帯域幅制限超過(転送量超過)
などがあります。
Themifyのテーマには、404エラー発生時に作成した任意のページを表示させることができますが、その他のステータスエラーが発生した時は、サーバーのエラー画面が表示されます。
サーバーのエラー画面は、味気ないだけでなく、メニューも表示されないため離脱に繋がりやすいので、エラーページをナビゲーションやサイトマップなどを含んだオリジナルページに変えて訪問者の離脱防止対策になります。
固定ページで先にステータスコードに合わせたエラーページを作成しておき、コードにエラーページのURLアドレスを貼り付ければオリジナルのエラーページを表示させることができます。
なお、Themifyのテーマの場合は、ページが存在しないことを表す「404エラー」はThemifyの設定画面で指定してください。このコードで404エラーページを指定しても表示させることができないので注意してください。
5-4 特定のIPアドレスからのアクセスを拒否(許可)する
IPアドレスとは、インターネットに接続するために必要な重複しない固有の識別番号のことで、私達インターネット利用者はNTT、ニフティー、OCNなどのプロバイダーと契約して「IPアドレス」を借り受けてインターネットに接続しています。
このIPアドレスを使って指定したIPアドレスだけを拒否したり、指定したIPアドレスだけを許可したりすることができます。
セキュリティー能力を高めるためには、大変便利な制御方法ですが、1点注意が必要です。
プロバイダーは、契約している客全員が一斉にネットに接続することがないので、プロバイダーが占有している「IPアドレス」の総数以上の客を持ち、客がネットに接続する度に「IPアドレス」を割り当てる方法を取って「IPアドレス」の有効利用を図っています。このように、ネットに接続する度に「IPアドレス」が変わるIPアドレスを「動的IPアドレス」と言います。
この動的IPアドレスを指定して相手を拒否しても、相手のIPアドレスが変わればアクセス拒否はできません。また、自分の動的IPアドレスだけをアクセス許可した場合、IPアドレスが変わったら自分もアクセスできなくなってしまいます。
このため、IPアドレスで拒否(許可)する場合は、ホスト名又はIPアドレスのサブネットマスク表示で行った方がいいと思います。ただし、同じホスト名又はサブネットマスク内のユーザーも一緒に拒否(許可)されます。
特に拒否する場合は、そのホスト名全員がアクセスできなくなるので注意してください。
簡単にホスト名を調べる方法を紹介します。
Infosniperというサイトにアクセスします。
(http://www.infosniper.net/)
Infosniperに接続すると
①に接続しているIPアドレス(あなたのIPアドレス)が表示されています。
②に①のIPアドレスのホスト名が表示されています。
拒否したいホスト名を調べる時は
①に拒否したいIPアドレスを入力して「CHECK」をクリックします。
すると②にそのIPアドレスのホスト名が表示されます。
なお、この検索サービスは24時間で5回の検索が可能です。(有料版は5万回で25USドルです。)
※※※ 注 意 ※※※
通信系のプロバイダーの場合、動的IPアドレスとホスト名が連動している場合があります。この場合、IPアドレスが変わるとホスト名も変わる為、IPアドレスを指定するのと同じになってしまいます。
もっと広範囲に「au-net.ne.jp」とホスト名を指定すればIPアドレスが変わってもアクセス拒否することもできますが、「au-net.ne.jp」を使用しているユーザー全員をアクセス拒否することになります。
また、アクセス許可とする場合は、指定するホスト名を「au-net.ne.jp」としないとIPアドレスが変わった時にアクセスできなくなります。
IPアドレスやホスト名でアクセス拒否(許可)するコードは簡単なものですが、その範囲を誤るとアクセスの減少や自分がアクセスできなくなるので注意してください。
※※※ 注 意 ※※※
「000.000.000.000」の部分を指定するIPアドレスに打ち変えてください。
IPアドレスのサブネットマスク表示にする場合は「000.000.000.000/00」となります。
ホスト名を指定する場合は「000.000.000.000」の部分をホスト名に打ち変えてください。
※ サブネットマスク表示に関してはこちらの記事を参考にしてください。
5-5 リダイレクトを作成する
ドメインが変わったり、投稿を更新したりしてURLアドレスが変わることがあります。その場合、リンク切れが発生してステータスエラー404が表示されます。訪問者の利便性の低下だけでなく、Google検索の順位にも影響を及ぼすのでリダイレクト設定をします。
リダイレクトに関するコードはいくつかありますが、代表的なものを紹介します。
※※※ 注 意 ※※※
は書き換えず、紹介するコードを既存のコードの後に貼り付けるようにしてください。
また、恒久的な転送ではなく、メンテナンス等のため一時的に転送したい場合は、[R=301,L]を[R=302,L]にしてください。
新しいURLアドレスに転送(リダイレクト)されることに違いはありませんが、Google検索に渡す情報が変わってきます。
現に公開しているサイトでリダイレクト設定を行う場合は、
公開サイトと同じ構成のテスト用のサイトを作り、動作確認を行ってから本番サイトで実行することをお勧めします。
(テスト用サイトは、ワードプレスの設定で検索エンジンにインディックスされないようにするだけでなく、サイト全体にベーシック認証をかけてください。)
※もっと簡単に記述できるものに変更しました。
5-6 ベーシック認証をかける
ベーシック認証とは、ブラウザーでサイトを表示する前にIDとパスワードを要求し、事前に登録してあるそれらと合致しなければステータスコード403を返してサイトを表示させないようにするものです。
パスワードを暗号化するため、「.htaccessEditor」さんのサイトにお邪魔してコードを作成させてもらいます。
「.htaccessEditor」さんのサイトを開きます。
左側サイドバーから「ベーシック認証」をクリックします。
①のユーザー名を半角英数記号文字で入力します。
②のパスワードを半角英数記号文字で入力し、③の「.htpasswdを作成」をクリックすると、青枠で囲った部分にユーザー名と暗号化されたパスワードが表示されます。
テキストエディターでファイル名を「.htpasswd」とした新しいファイルを作成し青枠内の文字を貼り付けてディスクトップに保存します。
④には、作成した.htpasswdをアップロードする位置を絶対パスで入力します。
絶対パスの簡単な調べ方を説明します。
テキストエディターでファイルを新規作成して次のコードを貼り付けて「sample.php」という名前でディスクトップに保存します。
保存したsample.phpファイルをベーシック認証をかけたいディレクトリにアップロードします。
例えばサイト全体にベーシック認証をかけるならドメインのルート直下に、ワードプレスのログイン画面にベーシック認証をかけるなら「wp-admin」の直下にアップロードします。
ブラウザーで新しくタブを開き、ドメインのルート直下にアップロードしたならば
URLアドレスに「qxqq8_ey7wp28_aki13sample.php」
wp-adminの直下にアップロードしたならば
URLアドレスに「qxqq8_ey7wp28_aki13wp-admin/sample.php」
と入力して実行します。
すると画面に
ドメインのルート直下の場合
wp-adminの直下の場合
と、絶対パスが表示されます。
④の「.htpasswdまでのサイトパス」に入力する値は
表示されている絶対パスの「sample.php」の部分を「.htpasswd」に置き換えたものになります。
④を入力すると⑤の部分に「.htaccess」に記述するコードが表示されているので、コピーして『.htaccess』に貼り付けます。
※※※ 注 意 ※※※
「5-1 .htaccessや.htpasswdなどを外部から見えないようにする」 のコードを入力してある場合は、<Files ~ >から</Files>までの部分は不要です。
コメントアウトを入力する場合は
# authenticate(Basic) を追加してください。
作成した.htaccessと.htpasswdをFTPソフトでアップロードすればベーシック認証をかけることができます。
5-7 wp-config.phpファイルを外部から見えないようにする ※追記
.htaccessや.htpasswdなどの重要なファイルを外部のブラウザーから見えなくする方法は 「5-1 .htaccessや.htpasswdなどを外部から見えないようにする」で紹介しました。
そこで一緒に紹介すべきでしたが、すっかり失念していました。
「wp-config.php」というファイルには、ザーバーの情報が書き込まれているとても重要なファイルがあります。
写真はこのサイトのアクセスログですが、赤枠で囲ったのURLアドレスを見てください。
この悪意を持ったハッカーは、何とかしてwp-configの情報を抜き出せないか30回以上アタックをしていました。
wp-config.phpにはサーバーのユーザー名やパスワードが書き込まれている重要なファイルなので外部のブラウザーから見えなくすると同時にファイル名を変えた古いファイルはサーバー上に置いておかない方が無難です。
6 絶対に.htaccessに記述しておくべきコードはどれ?
絶対に.htaccessに記述しておくべきコードは
・5-1 .htaccessや.htpasswdなどを外部から見えないようにする
・5-2 ファイル一覧・ディレクトリ一覧の作成を拒否する
・5-7 wp-config.phpファイルを外部から見えないようにする
です。
.htaccessはワードプレスをインストールするとルート直下に自動的に作成されます。Themifyのテーマやプラグインを有効化するとそれらの設定に応じて必要なコードが自動的に.htaccessに追加されます。また、レンタルサーバーの管理画面で設定した項目が、.htaccessに追加されていることもあります。
ですから、Themifyのテーマや各種プラグイン、サイト作成のチェックリストの中で紹介している便利なプラグインを有効化してから.htaccessを確認し、記述されていなければ追記する方がいいと思います。
エラーページ(HTTPステータスコード)へ転送に関しては、最低でもページが存在しないことを示すステータスコード404は作成した方がいいと思います。
Themifyのテーマは、ステータスコード404が発生した時に表示させるページを作成しておき、Themifyの設定画面でそのページを指定するようになっているので、.htaccessに追加する必要はありません。
個人的にはログイン画面にIPアドレス制御やベーシック認証をかけるよりも、『SiteGuard WP Plugin』でログインURLアドレスを変更したり、管理ページアクセス制限を行った方が間違いがないと思います。(不正ログインにはこれで防御</br>『SiteGuard WP Plugin』の設定方法)
繰り返しになりますが、.htaccessファイルは重要なファイルです。
間違って削除したり、上書きしてもすぐに復帰できるように、必ずコピーを作成してから作業を行うようにしてください。
この記事があなたのお役に立てたら幸いです。
またこの記事がお役に立てれたならhatena・Facebook・Twitterでシェアして頂けると励みになります。