WEBマーケティングのトータルサポートならディーエムソリューションズ株式会社
0120-934-226受付時間 平日9:00~18:00

.htaccessとは?設定できることや書き方と設定場所について

このエントリーをはてなブックマークに追加

Webサイトのリダイレクトなど、アクセスの制御を行いたい時に欠かせないファイル.htaccess(ドットエイチティーアクセス)。名前は聞いたことがあるし、なんとなくできることはわかるけど、具体的にはどうやって使うファイルかは説明できない…という方もいらっしゃるのではないでしょうか。
今回は.htaccessで設定できることや書き方、設置場所の注意点などについてご紹介します。

.htaccessとは?

.htaccessとは、「Apache(アパッチ)」というソフトウェアを使用しているWebサーバーの設定を制御することができるファイルです。

この.htaccessというファイルをサーバー内に設置することで、Webブラウザからのリクエストに対して、Webページをそのまま表示するか、別のページを代わりに出すか、表示するために条件を提示するか、というように、どのようにリクエストを返すのかをコントロールすることができます。

.htaccessが使える条件

.htaccessはどのWebサーバー、どのWebサイトでも利用できるファイルではありません。利用を検討する場合は、以下の条件に当てはまっているかを確認する必要があります。

「Apache(アパッチ)」を使用しているWebサーバーかどうか

WebサーバーがWebサーバーとして機能するためにはWebサーバーのソフトウェアというものが必ず必要になります。Apache以外にもIISといったマイクロソフトのソフトウェアも存在しています。IISなどの他のソフトウェアを使用している場合は、.htaccessのファイルをWebサーバーに置いても機能しません。
そのため、まずWebサーバーがApacheによって動いているかを確認しましょう。

.htaccessが使用可能な設定になっているかどうか

「Apache(アパッチ)」を使用しているWebサーバーであっても、サーバー側の設定により.htaccessが使えない場合もあります。レンタルサーバーなど、自社で管理していないサーバーは元々の設定で.htaccessを制限していることがあります。使えない場合は、別でコントロールできる手段が用意されている可能性もありますが、サーバーを借りる前に確認しておくことをおすすめします。

.htaccessファイルの作成・記述方法

では、実際に.htaccessの作成、記述方法をご紹介していきます。

ファイルの作成方法

.htaccessのファイルの作り方はとても簡単です。
.htaccessはテキストファイルのため、メモ帳などのテキストエディタを開いて「.htaccess」というファイル名で保存するだけで.htaccessのファイルになります。

ただし、.htaccessというファイル名で保存しようとすると、「.」を先頭にしたファイル名で保存できないといった警告メッセージなどが表示され保存できない場合があります。
その場合は、.htaccess以外のファイル名、例えばtest.htaccessやhtaccess.txtなどで一旦記述して保存し、ファイルをサーバーにアップロードした後に「.htaccess」にファイル名を直せば問題なく作動します。

ファイルの記述に関する注意点

.htaccessには記述にルールがあります。ルールに沿って記述をしていない状態の.htaccessをアップロードしていると、サイトが500のサーバーエラーを返してしまう可能性がありますので、以下に注意しましょう。

コメントアウトの方法

コメントアウトをする場合は、#を先頭に置きます。

記述途中の行でもコメントアウトの記述は可能ですが、記述場所によってはエラーを起こす可能性もあるため、1行使ってコメントアウトを記載しましょう。

文字コード

文字コードはUTF-8で、BOM無しにしましょう。

改行コードはLFにしてください。ただし文字コードは、半角文字のみしか使用していない場合は、Shift-JISでも問題ありません。

最後に必ず改行を入れる

記述の最後には必ず改行を入れる必要があります。改行は1行以上あっても問題ありません。

ファイルの設置方法

作成した.htaccessは、FTPなどを利用してサーバーにアップロードをすることで、すぐに動作し、サーバーの挙動に反映されます。

ファイルの設置場所については、以下で詳しくご説明していきます。

.htaccessファイルを設置する場所

.htaccessは複数設置することができ、ファイルを設置する場所でサーバーを制限できる範囲が変わります。

.htaccessはファイルを設置した階層内にしか反映されない

例えば以下のようなディレクトリだったとします。

/test/test1/test1-1/
/test/test2/
/test/test3/

/test1/という階層に.htaccessを設置した場合は、/test1/の階層配下のページ/test1/と/test1-1/のみ、アクセス制御ができます。

この場合、その上の階層の/test/や、同列にある階層/test2/、/test3/には何も反映されません。

下の階層の記述が優先される

上記のディレクトリの/test1/に.htaccessを置いた状態で、さらに、/test1-1/に.htaccessを置くことも可能です。

この場合、/test1-1/の記述内容と/test1/の記述内容で同じページに対して競合する指示があった場合は、より下層にある/test1-1/の内容が優先して実行されます。

.htaccessでできる4つの活用方法

次に、.htaccessでできる指示と、その具体的な記述内容についてご紹介していきます。

ベーシック認証を行う際の記述方法

WEB上に公開しているものの、一部のユーザーにしか見せたくないページについては、アクセスの制限をすることができます。アクセスした際に、ユーザーIDとパスワードの入力を求めるもので、ベーシック認証と言います。

.htaccess には以下の記述内容が必要です。

<Files ~ “^\.(htaccess|htpasswd)$”>
Deny from all
</Files>
AuthType Basic
AuthUserFile /フルパス/.htpasswd
AuthName “IDとパスワードを入力してください”
AuthType Basic
require valid-user

AuthUserFileは.htpasswd(後述します)のファイルのフルパス(絶対パス)を記述します。

AuthNameは認証時にユーザー側に表示されるメッセージです。任意の内容を入力しましょう。

.htpasswdのファイル作成・格納も必要

ベーシック認証を有効にするには、上記の.htaccessの記述だけでなく、.htpasswdと言うファイルの作成も合わせて必要になります。

.htpasswdは、.htaccessと同様にテキストファイルで保存するだけで作成が可能です。

ユーザー名:パスワード
ユーザー名:パスワード

上記のように認証に必要な任意のユーザー名とパスワードを作っていきます。パスワードは暗号化されたパスワードである必要があります。

例えばuser1というIDで、パスワードをtest、とした場合は以下のような記述になります。

user1:YbLDj77cHYN1E

上記の暗号化されたパスワードを作成したい場合は、以下のような記述作成のWebツールを使って作成が可能です。


引用元:LUFTTOOLS

.htpasswdは対応する.htaccessと同じ階層に設置しましょう。
.htaccessには、.htpasswdのファイルの場所を絶対パスで記述する必要があります。

.htaccessと.htpasswd、両方が存在することで、ベーシック認証の設定が可能になります。

301リダイレクトを行う際の記述方法

.htaccessでは、指定のページにアクセスした際に、別のページに自動的に転送させることかできる、301リダイレクトの処理ができます。301リダイレクトは、基本的にページのURLが変更になった時に使用します。

301リダイレクトの設定は、ディレクトリ単位やページ単位で設定が可能です。

ページ単位での転送設定の場合

ページ単位で301リダイレクトを行う場合の記述は以下の通りです。

RewriteRule ^/old-page.html$ https://www.example/new-page.html [R=301,L]

/old-page.htmlの部分には、転送前の旧URLを記述します。改行してその下には、転送先の新URLを記述します。転送先のURLは、httpから記述してください。最後に、転送先のURLの後ろに[R=301,L]を記述します。

ディレクトリ単位の転送設定の場合

ディレクトリ単位で301リダイレクトを行う場合の記述は以下の通りです。

RewriteRule ^old-dir(.*)$ /new-dir$1 [R=301,L]

上記の記述の場合、/old-dir/というディレクトリ配下のページを全て/new-dir/というディレクトリ配下に転送させることができます。

301リダイレクトについて詳しく知りたい方は、以下の記事を参考にしてください。

301リダイレクトとは?サイトリニューアル時に必ず設定したい.htaccessの記述方法

URLの正規化を行う際の記述方法

301リダイレクトの方法を利用し、.htaccessで設定することで、「www.」の有り無し、「/index.html」などの有り無しと言った複数のURLで生成される同一コンテンツを1つのURLに統一、正規化することができます。

以下は、「www.」有り、「index.html」無しでURLを正規化したい場合の記述です。

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(example.com)(:80)? [NC]

RewriteRule ^(.*) https://www.example.com/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html

RewriteRule ^(.*)index.html$ https://www.example.com/$1 [R=301,L]

example.comの部分はドメイン名となります。サイトのドメイン名に差し替えて利用してください。

また、index.htmlだけでなくindex.phpなどでも同じページが生成されるパターンもあります。その場合は上記記事内のindex.htmlの部分を、任意のファイル名に書き換えましょう。

URLの正規化について詳しく知りたい方は、以下の記事を参考にしてください。

URLの正規化とは?正規化が必要な理由と実践方法

特定のIPアドレスやドメインからのアクセス制限を行う際の記述方法

最後にご紹介するのは、最初に紹介したベーシック認証のようにIDとパスワードの入力でアクセスを制限するのではなく、指定したIPアドレスやドメインからのアクセスだけを制限する方法です。特定のIPアドレスから不正なアクセスがあった場合の対処法などにも有効です。

記述は以下のようにします。

order allow,deny
allow from all
deny from アクセス制限したいIPアドレスorドメイン

逆にアクセスを特定のIPやドメインだけに許可したい場合は、以下のようにdenyとallowの記述を差し替えます。

order deny,allow
deny from all
allow from アクセスを許可したいIPアドレスorドメイン

おわりに

ご紹介した.htaccessの活用方法はほんの一例で、その他にも色々なコントロールが可能です。とても便利な反面、記述を間違えるとアクセスに大きな影響を及ぼす場合もあります。複雑な設定には特に注意が必要なことも、忘れないようにしてください。この記事が読んでいる皆様の役に立てれば幸いです!

 

このエントリーをはてなブックマークに追加
The following two tabs change content below.
digital-marketing

digital-marketing

デジタルマーケティング研究所では、デジタルマーケティングの施策・広告・技術を、分析・実装・検証して、WEB担当者・マーケティング担当者の方の役立つ情報を発信していきます。
SNSでフォロー

Contact

Webマーケティングに関わる施策全般をワンストップでご提供します。
お気軽にご相談ください。

Webマーケティング最新情報をお届け
東京営業所
東京都新宿区西新宿1丁目6-1 新宿エルタワー3階
電話番号 03-6258-0911 FAX番号 0422-26-5610
大阪営業所
大阪府大阪市北区堂島1丁目5-30 堂島プラザビル10F
電話番号 06-6450-0010 FAX番号 06-6450-0015
Copyright © 2020 DM SOLUTIONS Co.,Ltd. All rights reserved.