Webサイトのリダイレクトなど、アクセスの制御を行いたい時に欠かせないファイル.htaccess(ドットエイチティーアクセス)。名前は聞いたことがあるし、なんとなくできることはわかるけど、具体的にはどうやって使うファイルかは説明できない…という方もいらっしゃるのではないでしょうか。
今回は.htaccessで設定できることや書き方、設置場所の注意点などについてご紹介します。
目次
.htaccessとは、「Apache(アパッチ)」というソフトウェアを使用しているWebサーバーのディレクトリ単位で設定を制御することができるファイルです。通常、Apacheのwebサーバー制御は「httpd.conf」で行いますが、root権限を持つサーバー管理者しか権限を持っていません。そのため、webサーバー設定を自分好みにしたい場合、Apacheに.htaccessファイルを格納することで制御を行います。
この.htaccessというファイルをサーバー内に設置することで、Webブラウザからのリクエストに対して、Webページをそのまま表示するか、別のページを代わりに出すか、表示するために条件を提示するか、というように、どのようにリクエストを返すのかをコントロールすることができます。
.htaccessはどのWebサーバー、どのWebサイトでも利用できるファイルではありません。利用を検討する場合は、以下の条件に当てはまっているかを確認する必要があります。
WebサーバーがWebサーバーとして機能するためにはWebサーバーのソフトウェアというものが必ず必要になります。Apache以外にもIISといったマイクロソフトのソフトウェアも存在しています。IISなどの他のソフトウェアを使用している場合は、.htaccessのファイルをWebサーバーに置いても機能しません。
そのため、まずWebサーバーがApacheによって動いているかを確認しましょう。
「Apache(アパッチ)」を使用しているWebサーバーであっても、サーバー側の設定により.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は複数設置することができ、ファイルを設置する場所でサーバーを制限できる範囲が変わります。
例えば以下のようなディレクトリだったとします。
/test1/という階層に.htaccessを設置した場合は、/test1/の階層配下のページ/test1/と/test1-1/のみ、アクセス制御ができます。
この場合、その上の階層の/test/や、同列にある階層/test2/、/test3/には何も反映されません。
上記のディレクトリの/test1/に.htaccessを置いた状態で、さらに、/test1-1/に.htaccessを置くことも可能です。
この場合、/test1-1/の記述内容と/test1/の記述内容で同じページに対して競合する指示があった場合は、より下層にある/test1-1/の内容が優先して実行されます。
次に、.htaccessでできる指示と、その具体的な記述内容についてご紹介していきます。
WEB上に公開しているものの、一部のユーザーにしか見せたくないページについては、アクセスの制限をすることができます。アクセスした際に、ユーザーIDとパスワードの入力を求めるもので、ベーシック認証と言います。
.htaccess には以下の記述内容が必要です。
AuthUserFileは.htpasswd(後述します)のファイルのフルパス(絶対パス)を記述します。
AuthNameは認証時にユーザー側に表示されるメッセージです。任意の内容を入力しましょう。
ベーシック認証を有効にするには、上記の.htaccessの記述だけでなく、.htpasswdと言うファイルの作成も合わせて必要になります。
.htpasswdは、.htaccessと同様にテキストファイルで保存するだけで作成が可能です。
上記のように認証に必要な任意のユーザー名とパスワードを作っていきます。パスワードは暗号化されたパスワードである必要があります。
例えばuser1というIDで、パスワードをtest、とした場合は以下のような記述になります。
上記の暗号化されたパスワードを作成したい場合は、以下のような記述作成のWebツールを使って作成が可能です。
引用元:LUFTTOOLS
.htpasswdは対応する.htaccessと同じ階層に設置しましょう。
.htaccessには、.htpasswdのファイルの場所を絶対パスで記述する必要があります。
.htaccessと.htpasswd、両方が存在することで、ベーシック認証の設定が可能になります。
.htaccessでは、指定のページにアクセスした際に、別のページに自動的に転送させることかできる、301リダイレクトの処理ができます。301リダイレクトは、基本的にページのURLが変更になった時に使用します。
301リダイレクトの設定は、ディレクトリ単位やページ単位で設定が可能です。
ページ単位で301リダイレクトを行う場合の記述は以下の通りです。
/old-page.htmlの部分には、転送前の旧URLを記述します。改行してその下には、転送先の新URLを記述します。転送先のURLは、httpから記述してください。最後に、転送先のURLの後ろに[R=301,L]を記述します。
ディレクトリ単位で301リダイレクトを行う場合の記述は以下の通りです。
上記の記述の場合、/old-dir/というディレクトリ配下のページを全て/new-dir/というディレクトリ配下に転送させることができます。
301リダイレクトについて詳しく知りたい方は、以下の記事を参考にしてください。
301リダイレクトの方法を利用し、.htaccessで設定することで、「www.」の有り無し、「/index.html」などの有り無しと言った複数のURLで生成される同一コンテンツを1つのURLに統一、正規化することができます。
以下は、「www.」有り、「index.html」無しでURLを正規化したい場合の記述です。
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の正規化について詳しく知りたい方は、以下の記事を参考にしてください。
最後にご紹介するのは、最初に紹介したベーシック認証のようにIDとパスワードの入力でアクセスを制限するのではなく、指定したIPアドレスやドメインからのアクセスだけを制限する方法です。特定のIPアドレスから不正なアクセスがあった場合の対処法などにも有効です。
記述は以下のようにします。
逆にアクセスを特定のIPやドメインだけに許可したい場合は、以下のようにdenyとallowの記述を差し替えます。
ウェブサーバーをコントロールする役割を持っています。.htaccessはWebサイトの引っ越し時のリダイレクトや特定のフォルダに対するパスワードの設定、アクセス制限を行う時に活用するファイルです。
サーバーの種類がApache(アパッチ)である場合に.htaccessのファイルを活用します。また、サーバ管理者によって.htaccessが存在するファイルの場所にアクセスする権限が必要です。
.htaccessの記述はメモ帳などで作成が可能なので、特別なソフトや機能は必要ありません。
書き直しは可能です。.htaccessの記述ミスをするとサイトにアクセスできないなどの障害が発生する可能性もありますので、誤った記述は早急な修正対応が必要です。
.htaccessの誤りはサイト見られなくなるなど、損失が起こりえます。そのため、エンジニアに相談するのが良いでしょう。
ご紹介した.htaccessの活用方法はほんの一例で、その他にも色々なコントロールが可能です。とても便利な反面、記述を間違えるとアクセスに大きな影響を及ぼす場合もあります。複雑な設定には特に注意が必要なことも、忘れないようにしてください。この記事が読んでいる皆様の役に立てれば幸いです!
どのようなサイトにも必ずある「お問い合わせフォーム」。実は、このお問い合わせフォームの作り方次第で、CVRが劇的に変わるのをご存知でしょうか…
ウェブサイトを運営していると、アクセスの急増やGoogleアップデートによる検索順位の影響で、サーバーやドメインの移管作業が必要な場合があり…
Webサイトのトレンドは日々変わります。一度作ったきりのWebサイトは、時間の経過とともにどこか古臭くなってしまい、ユーザーにとっても使いに…
EC・通販サイト運営における売上アップを考えたとき、ECサイトそのもののリニューアルを行うのは有効な手段です。特にサイト作成から時間が経過し…
WordPressは、Webサイトを誰でも簡単に作ることができるCMS(コンテンツ・マネジメント・システム)です。そのWordPressの機…
世界中のウェブサイトの35%はWordPress(ワードプレス)で作られています。 使いやすい管理画面、多くのプラグインやテーマによる自由度…