.htaccessファイルとは?作り方や設置方法をご紹介します

.htaccessファイルとは、Apache(アパッチ)というWEBサーバーソフトウェアを利用しているWEBサーバーの基本的な動きを、ディレクトリ単位で設置と設定(制御)が行える設定ファイルです

具体的には、アクセスの制限や、特定のURLにアクセスしたユーザーを指定したURLへ自動で転送するリダイレクトの設定などに利用されます。

WEBサイトの運営を進めるうえで、「.htaccess」という言葉を聞いたことはあるものの、正しい記述方法や使い方がわからないという方もいるかと思います。

このページでは、.htaccessでできることや基本的な役割、使い方、正しい設定方法について解説しますので、サイト運営の担当者は、是非ご一読ください。

.htaccessを正しく使用することができれば、SEO対策にもつながるため、正しい記述方法や使い方を覚えておきましょう。

.htaccessとは

冒頭でもお伝えしましたが、.htaccess(ドットエイチティアクセス)とは、Apache(アパッチ)というWEBサーバーソフトウェアを利用しているWEBサーバーの基本的な動きを、ディレクトリ単位で設置と設定(制御)が行える設定ファイルです。(※Apacheとは、正式名称をApach HTTP Serverといい、無料で利用できるオープンソースのWebサーバーソフトウェア)

簡単な言葉に言い換えると、Webサイト内にあるページへのアクセスを管理し、ユーザーに見せたいページへ誘導したり、指定したページへのアクセスを制限したりするためのファイルです。

.htaccessが利用される例として、リダイレクトの設定や404ページの作成、BASIC認証やIPアドレスによるアクセス制限が挙げられます。

.htaccessを使用する条件

実は、全てのWEBサーバーで.htaccessを使用できるものではありません。.htaccessが使用できるか否かは、次の2点を確認する必要があります。

1つ目は、サーバーのソフトウェアが「Apache」であるか否かです。

サーバーソフトウェアがApacheでなければ、.htaccessに記述した内容が実行されないため、.htaccessを使用できません。そのため、レンタルサーバー等を利用しWEBサイトを運営している場合には、サーバーのソフトウェアがApacheか否かを確認する必要があります。

2つ目は、初期設定です。1つ目のサーバーソフトウェアにApacheが使われていたとしても、設定やCMS側で.htaccessが使用ができないよう設定されていると使えません。

レンタルサーバーやCMSの中には、.htaccessファイルが使用できないような設定しているものもあるため、もし使用できない場合には、レンタルサーバーの会社に問い合わせる必要があります。

続いて、.htaccessでできることを具体的にご説明していきます。

.htaccessで出来る5つのこと

まず.htaccessでは、主に「リダイレクト設定」「URLの正規化」「BASIC認証」「IP制限」「カスタム404ページの作成」の5つを行う際に利用します。

それぞれの詳細をご説明していきます。

リダイレクト設定

1つ目は、リダイレクトの設定です。

ユーザーが.htaccessが設定されているディレクトリや特定のページへアクセスした際に、別の指定ページに転送(リダイレクト)することができます。

リダイレクトには、永久的な転送である301リダイレクトや一時的な転送となる302リダイレクトなどがあり、サーバ側での転送処理はこの.htaccessファイルを設定することで実施されます。

URLの正規化

2つ目は、URLの正規化です。

URLの正規化とは、同じ内容のページが複数のURLで存在する場合に、検索エンジンからの評価を集めたいURLを指定することで評価の分散を防ぐものです。

URLの正規化をすべきページ
  • www.の有無(https://www.abc.comとhttps://abc.com)
  • index.htmlの有無(https://www.abc.comとhttps://www.abc.com/index.html)
  • httpとhttps(SSL化)(http://www.abc.comとhttps://www.abc.com)
  • パラメータの付与(https://www.abc.comとhttps://www.abc.com/utm~)

上記のようなURLは、表示される内容は同じなのに複数のURLでアクセスできてしまうため、.htaccessを使い1つのURLを正規化することで、評価の分散が防げます。

BASIC認証

3つ目は、BASIC(ベーシック)認証です。

BASIC認証とは、Webサイトの一部にアクセス制限をかける際に使うものです。BASIC認証を設定しておくと、ページへアクセスした際に、ユーザー名とパスワードを入力して認証されなければページを開くことはできません。

Webサイト内にある特定のページへのアクセスを制限したい場合や、社内データを指定した社員のみにアクセスさせたい場合などに有効です。

IP制限

4つ目は、IP制限です。

IP制限は、BASIC認証と同じく指定されたページへのアクセスを規制するもので、指定されたIPアドレスからのアクセスでない限り、ページにアクセスすることができません(指定IPアドレス以外からのアクセスには401エラーが表示されます)。

また、不正なアクセスを行ったIPや海外のIPを使ったアクセスなどを指定してアクセス拒否する場合にも、IP制限が使用されます。

IP制限はBASIC認証と同じく、アクセスを制限する際に利用されることが多いですが、BASIC認証はユーザー名とパスワードでカギを掛けるの対し、IP制限は「どこからのアクセスを許可・排除」するかで制限をかける違いがあります。。

カスタム404エラーページの表示

カスタム404への転送処理

5つ目は、あらかじめ設定した404エラーページへの転送・表示です。

Webサーバ内から削除してしまったページやもともと存在しないページへユーザーがアクセスしようとすると、デフォルトの404エラーメッセージが表示されます。

しかし、このデフォルト404ページは、エラーメッセージだけが表示されるため、せっかくアクセスしてくれたユーザーを離脱させるだけのものです。

自社サイトのトップページへの自動転送やその他ページへのアクセス、サイト内検索窓などを設置したオリジナルの404エラーページへ転送する際、.htaccessを使います。

.htaccessと使うとできることが分かったところで、続いて実際にファイルを作成する方法をご紹介します。

.htaccessの書き方

.htaccessファイルは、メモ帳などのテキストエディタで作成できます。

各機能を利用するための記述方法をご紹介する前に、.htaccessファイルには以下の書き方に関するルールがあります。

.htaccessファイルの記述に関するルール
  • 改行コードはLF
  • ファイル作成後、保存する際の文字コードはUTF-8
  • 最後の行は空白にする(改行しておく)
  • 保存する際のファイル名称を「.htaccess」とする

上記ルールを守った上で、利用する機能に応じて以下にご紹介する内容を記述します。

リダイレクトの場合

ユーザーがアクセスしようとしたWebサイトから別のサイトへ転送するリダイレクトの記述例は以下となります。

RewriteEngine On
RewriteCond %{http_host} ^〇〇〇.co.jp
RewriteRule ^(.*) https://□□□.co.jp/$1 [R=301,L]

「〇〇〇.co.jp」へのアクセスを「https://□□□.co.jp」に301リダイレクトをかける場合の記述になります。302リダイレクトの場合は、301部分を「302」に書き換えます。

リダイレクトにはその他にもディレクトリ単位、ページ単位での転送も可能です。詳しくは『リダイレクトとは?種類や設定方法、エラーの対処法を解説』で解説しているので以下をご参照ください。

URLの正規化を行う場合

1つの内容が同じページへのアクセスに、複数のURLがある場合、以下の.htaccessファイルを作成し、URLの正規化を行います。

wwwやindex.htmlの有無、SSL化に伴うhttpからhttpsへの変更およびパラメータが付与されたURLの正規化は、以下の記述を行います。

「wwwあり」から「wwwなし」へ

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.〇〇〇\.com$
RewriteRule ^(.*)$ http://〇〇〇.com/$1 [R=301,L]

「index.htmlあり」を「index.htmlなし」へ

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://〇〇〇.com/$1 [R=301,L]

SSL導入の際、「http」から「https」へ

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

「URLにパラメータが付与された」ものを「パラメータなし」へ

RewriteEngine on
RewriteRule ^before/index.html$ https://〇〇〇/index.php [R=301,L]

以上が、URLの正規化で.htaccessを使用する場合の例となります。

BASIC認証の場合

BASIC認証を導入する際の.htaccessファイルの作り方は以下となります。

AuthName "Basic auth." (このBASIC認証の名称)
AuthType Basic(Basic認証であることを宣言)
AuthGroupfile /dev/null (グループでの使用か否かを記述、個人使用なら「/null」)
AuthName “Please enter your ID and password” (アクセス時に表示されるメッセージ、日本語だと文字化けする可能性があるので英語にしておく)
AuthUserFile /path/.htpasswd (.htpasswdまでのフルパスを記述)
require valid-user (IDとパスワードが一致したユーザーがアクセス可能)

また、BASIC認証には、上記の.htaccessファイルとは別に、アクセス承認のために必要なユーザーIDとパスワードを記述する「.htpasswd」ファイルも必要です。

記述内容は「ユーザーID:パスワード」なのですが、パスワードの暗号化をしておかないと盗み見されてしまうことがあります。インターネット検索をすると無料で使える専用ツールが出てくるので利用しましょう。

作成した.htpasswdファイルは、Webサーバ内のサイト情報が入ったフォルダとは別フォルダに格納するようにしましょう。その際、どこに格納したか必ずパスを確認し、上記.htaccessファイルに記述することを忘れないでください。

URLの正規化については、詳しい情報を『canonical(カノニカル)とは?URLの正規化でSEO対策を進めよう』にまとめていますので、ご参照ください。

IP制限の場合

.htaccessを使ってIP制限をかける場合の記述は、以下となります。

order allow,deny (アクセス制限)
deny from all (全てのアクセスを制限)
allow from 123.456.789.012 (ただし、from以下のIPからのアクセスは許可)

上記の例は「123.456.789.012」というIP以外でアクセスしようとすると、拒否される設定になります。

複数のIPからアクセスを許可する場合は、allow from IPという行を改行した後に追加します。続いて、上記で作成した.htaccessファイルをどこに設置すれば良いか、解説します。

.htaccessの設置場所と有効範囲

.htaccessはファイルを作っただけでは、記述した内容を機能させることができません。WEBサイトのサーバー内の正しい階層に.htaccessファイルを設置することで、正しく機能します。

具体的には、以下の画像のように、有効範囲をイメージしながら設置する必要があります。

.htaccessファイルの設置位置と有効範囲

このように、.htaccessファイルの内容をWebサイト全体に影響させる場合はルートディレクトリ、指定した下層ディレクトリのみ有効にさせる場合はそのディレクトリのトップに設置しましょう。

設置場所を間違えると、リダイレクトされなかったり、誤ったファイルへ転送されてしまうのでくれぐれも注意しましょう。

最後に、.htaccessを設定する際、注意しなければならないポイントについて解説します。

.htaccessを設定するときの注意点

.htaccessファイルは、ユーザーを見せたいページに導いたり、アクセスさせたくない箇所を見せないようにすることができる便利なものです。

これから.htaccessファイルを使ってみようとお考えなら、以下の点にはくれぐれも注意が必要です。

ファイル名を間違えないこと

1つ目の注意点は、ファイル名を間違えないことです。

.htaccessのファイル名は「.htaccess」であり、ドット「.」がない「htaccess」ではありません。また、テキストエディタで保存すると拡張子に「.txt」がつくことがありますが、これも不要です。

稀にファイル名の最初の文字がドット「.」だと保存できない場合には、一度ファイル名をhtaccess.txtなどで保存し、サーバーにアップロードする際、名称を「.htaccess」に変更しましょう。

.htaccessファイルの設置場所を間違えない

2つ目に気を付けなければならない点は、.htaccessファイルの設置場所です。

先の設置場所と有効範囲でもご紹介した通り、.htaccessファイルは設置場所によって有効範囲が変わります。特に下層ディレクトリにのみ.htaccessで記述した内容を有効にしたい場合、誤って上層に設置してしまうとサイト内に混乱が起こります。

アップロードの際、どこに設置すべきか必ず確認をしておきましょう。

セキュリティ低下のリスクを理解しておく

3つ目は、.htaccessファイルを設置することでセキュリティが低下するリスクがあることを理解しておくことです。

.htaccessはサーバー内に設置しなければならないため、外部企業に作業を依頼する場合、サーバー情報を伝えなければなりません。万が一、その情報を悪用されてしまうと自社サイトがハッキングされるリスクもあります。

サーバー情報についてはくれぐれも厳しく管理するようにしてください。

また、.htaccessファイルそのものにアクセスされてしまうと、勝手に転送やアクセス制限をかけられてしまいます。.htaccessファイルそのものにアクセス制限をかけておくとセキュリティのアップになります。

.htaccessの記述から設置まで、共通して言えることですが、知識のあるスタッフが管理することをおすすめします。

まとめ

SEO対策をはじめ、自社サーバー内の機密情報を守るためにも役立つ.htaccessファイルについて解説しました。

.htaccessファイルは、転送処理やサーバー内のデータへのアクセス制限など、正しく使うと非常に便利です。

一方で、記述内容に間違いがあったり、サーバー内の設置場所を間違えると、自社サイトに影響が出てしまい、ユーザーを混乱させてしまいます。

.htaccessの準備・作成や設置については、知識のあるスタッフが行うようにしましょう。

このページに記載している記述例や設置方法を活かし、.htaccessファイルを利用して自社サイトへのSEO評価を高めるのにお役立てください。

.htaccessを含む、内部対策については、以下のページにまとめています。