fbpx

As Best Creative, Do Everything For a Goal…

Blog 社員ブログ

BLOG

社員ブログ

Web制作Web知識
.htaccessとは?リダイレクトやBASIC認証などの書き方(例)も紹介
2021/08/27

.htaccess(ドットエイチティアクセス)

.htaccess(ドットエイチティアクセス)を詳しくご存知でしょうか。
Webサイトの運用に携わる方ならおそらく、制作担当者に限らず、一度は見聞きしたことのある言葉だと思います。そうはいってもやはり、普段、仕事に直結しているかどうかで理解の度合いは異なるはずです。実際のところ、専門分野だと線引きし、先入観で難しく捉えている方もいらっしゃいます。

そこで本記事では、おさえておきたい「.htaccess」の基本について解説。リダイレクトやBASIC認証の書き方まで具体的に紹介、言及します。

目次

.htaccessとは?

.htaccessについて

.htaccessとは、Webサーバー(Apache)の基本的な動作をディレクトリ単位で指定できるファイルのことです。
主に、BASIC認証の追加や、IPアドレスによるアクセスの制限、404エラーページのリダイレクトなどが設定できます。サイトの安全性に寄与したり、利便性向上の作業を簡易化できたりと随所で役立つファイルです。

.htaccessをディレクトリ内に設置すると、(.htaccess内に)記述された内容が、対象ディレクトリに加えその配下(のディレクトリ)にまですべて反映されます。

Apacheで記述する場合、「httpd.conf」というファイルにて設定しますが、こちらはサーバー管理者しか編集できません。対して.htaccessは、各ユーザーがディレクトリ単位で設定可能です。

.htaccessは、メモ帳などのテキストエディタで作成します。使用できる文字コードは、BOMなしのUTF-8のみです。改行コードには、LFを用います。なお、文章の最後には必ず改行が入ります。

.htaccessでリダイレクトを設定する書き方

.htaccessによるリダイレクト

.htaccessでは、リダイレクトを設定できます。リダイレクトとは、とあるページにアクセスしたユーザーを指定のページに移動させることです。
書き方は以下のフォーマットに倣ってください。

Redirect ステータス 転送元のURL 転送先のURL
ステータスは、主に301リダイレクトに該当する“permanent”か、302リダイレクトの“temp”を使用します。たとえば、サイトの移転やSSL化の設定を行った場合はpermanentを指定しましょう。他方、一時的にサイトを振り分けたい場合は、tempを指定してください。

転送元のURLは、/(スラッシュ)から始まるルートパスを記述します。そして転送先URLに書くのは、httpsから始まる絶対パスです。
したがって、現在のWebサイトを301リダイレクトでhttps://newsite.com/に転送させたい場合の書き方は、次のようになります。

Redirect permanent / https://newsite.com/

また、サーバーにmod_rewriteの機能が備わっていれば、で囲み、「RewriteEngine on」の構文を書くことでも設定可能です。

RewriteEngine on
リダイレクト処理を記述


.htaccessでリダイレクトを設定すれば、404エラーが発生したときの表示を任意のページに変更可能することもできます。書き方は、以下の通りです。

ErrorDocument 404 /任意のファイル
Googleは、有益な404エラーページの作成を推奨しています。SEOへの意識とあわせて、ぜひ活用してみてください。

その他、リダイレクトの設定では、ドメインにおけるwwwの有無の統一などもできます。以下、手順です。
まず「RewriteEngine on」の構文で書き換えの開始を命令します。
次に「RewriteCond」で書き換えの対象となるドメインを指定しましょう。その際、ドメインの前に%{HTTP_HOST} 、ドメインの後ろに [NC] を記述します。%{HTTP_HOST} はホスト名を表す変数、 [NC] は大文字と小文字を区別しないフラグです。

最後に、「RewriteRule」で統一されるドメインを指定、末尾に[R=301,L]すれば完了です。
[R=301,L]は、301リダイレクトでの処理と、処理の終了を意味します。
www有りに変換する場合は次の通りです。

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

なお、301リダイレクトについてはこちらの記事でも詳しく解説しています。
301リダイレクト~SEOのために知っておきたい設定方法~

.htaccessで行う特定のIPアドレス、ホスト名からのアクセス制限

.htaccessでの基本構文

IPアドレスやホスト名をフィルタリングし、アクセス制限することも.htaccessから行えます。たとえば、特定のWebページに対して社外からのアクセスを遮断することなどが可能です。
また、対象はピンポイントに指定できるため、迷惑行為やスパムの対策にも有効に作用します。

アクセスを拒否する場合の書き方は以下の通りです。

order allow,deny
allow from all
deny from 111.222.111.222(※IPアドレス)
deny from example.ne.jp(※ホスト名)

アクセスを許可する場合の書き方は以下の通りです。

order deny,allow
deny from all
allow from 111.222.111.222(※IPアドレス)
allow from example.ne.jp(※ホスト名)

両者、書き始めから異なります。
拒否を設定する前者(order allow,deny)では、orderの後は許可(allow)→拒否(deny)の順です。続けて「allow from all」で一旦すべてを許可し、改行後、特定のIPアドレスやホストに対してアクセスを拒否(deny)するよう指定します。
後者(order deny,allow)はその逆です。拒否(deny)→許可(allow)の順に記述した後で、すべて拒否し、改行後、アクセスの許可(allow)を指定します。

.htaccessで行う特定のファイルへのアクセス制限

.htaccessで指定するアクセス制限

.htaccessでは、特定のファイルへのアクセスを制限することができます。「.htpasswd」や掲示板やアクセス解析CGIなどが出力するログファイルなどは、ブラウザから直接閲覧可能です。そのため、第三者に編集されないためには、ファイルを保護する必要があります。
たとえば、example.htmlというファイルへのアクセスを制限する場合の記述形式は以下の通りです。

Deny from all

“Deny from all”と書くことによって、example.htmlへのアクセスをすべて拒否できます。
なお、.htaccessは該当ファイル(この場合、example.html)と同じ階層であることが条件です。

.htaccessで行うBASIC認証の追加

.htaccessで行うBASIC認証

アクセス制限にはBASIC認証という手段もあります。Webサイトだけでなく、ディレクトリ、ファイル、ユーザー単位での設定も可能です。
基本的には次のように書きます。

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
上記の.htaccessファイルとは別にユーザー名とパスワードを記述する.htpasswdファイルも準備します(書式はユーザー名:パスワード)。
記述するパスワードの文字列は暗号化が必要です(.htpasswd生成 に便利なサイトはこちら)。
また、作成した.htpasswdは、.htaccessと同じディレクトリに設置するようにしましょう。

BASIC認証は、サイトを公開する前の段階で、クライアントや関係者のみがアクセスできる状態にしておくために使われることが多いです。また、有料コンテンツなど、特定の条件を満たしたユーザーのアクセスのみを許可する際にも活用されます。
加えて、ページをGoogleにインデックスされたくない場合にも使えます。BASIC認証を追加すれば、IDとパスワードによってクローラーを遮断することが可能です。

.htaccessを設定する際の注意点

積み木で表示される「.htaccess」

.htaccessを設定する際にはいくつか注意点があります。
たとえば、以下の通りです。

・使用できるサーバー用ソフトウェアはApacheのみ
・サーバー管理者の使用許可が必要
・設置したディレクトリより上の階層では反映されない

そのほか当然、記述ミスがあってもいけません。この時、500 Internal Server Errorが表示されます。スペルミスだけでなく文字コードや改行コードにも気を付けましょう。

.htaccessは、日本語を含めることができますが、挙動に関しては不安定な印象を覚えます。よほど特別な事情がない限り、用いるのは半角英数字や記号にしてください。

#を使ってコメントを残すことができます。複数人で.htaccessを編集する場合は便利です。ただし、#を付け忘れるとそのまま反映されてしまうため、慎重に扱いましょう。

ファイル名の頭文字を(ドット)にした場合、保存できない可能性があります。最初から名称を「.htaccess」にせず、まず「htaccess.txt」など、環境に依存しない形でサーバーに保存することがおすすめです。その後、サーバー上で変更するようにしましょう。

.htaccessの基本構文を知り、実際に書いてみよう!

.htaccessでできること

.htaccess上では、リダイレクトの設定や、BASIC認証の追加など、サイトの挙動を設定することができます。テキストファイルで編集できる手軽さも魅力的です。
ただし、適切な書き方を知らなければ、うまく反映されません。サイトが表示されないとなると、サイトの価値は下がります。したがって、設定には細心の注意を払いましょう。
一方で、基本構文を知れば、後はケースバイケースで当てはめるのみです。慣れないうちは記述ミスもあるかもしれませんが、やはり習得するためには手を動かすことが大事だと考えます。
ぜひ、慎重かつ積極的に取り組んでみてください。

(本文:サトウ)

SHARE

PLEASE CONTACT US

サングローブのサービスにご関心のある方は、
いつでも下記のボタンからお問い合わせください。

Go to TOP
Go to TOP