📚

.htaccessファイルの使い方

2024/05/15に公開

.htaccess(ドットエイチティーアクセス)とはApacheというウェブサーバーソフトウェアが使用されている環境で、ウェブサーバーをディレクトリ単位で制御するためのファイルのことです。

個人的にWordPressのサイトを開設するときにサブディレクトリに設置することが多く、.htaccessでURLの正規化を行うことが多いのでまとめてみました。

サブディレクトリにWordPressをインストールすると...

通常はルートディレクトリに直接インストールしますが、サブディレクトリにインストールすると次のような利点があります。

  • WordPress以外のシステムと区別でき、管理がしやすくなる
  • コアファイルをルートディレクトリから移すことで、悪意のある第三者からのセキュリティ対策ができる

このページでは.htaccessの基本と用途について説明します。

作成方法

.htaccessファイルを作成するときは次のポイントに注意して作成する必要があります。

  1. テキストエディタを使用する
  2. 文字コードはUTF-8を使用する
  3. 改行する場合はLFを使用する
  4. 最終行には空行を入れる
  5. ファイル名・拡張子は「.htaccess」にする

上記を踏まえて.htaccessを作成し終えた後、FTPソフト等を使用してアップロードをしますが、このとき.htaccessを設置したディレクトリでは、サブディレクトリを含むすべてのファイルに設定が反映されることに注意してください。

.htaccessでできること

.htaccessは主に次の5つの目的で作成されます。以下でそれぞれについて説明していきます。

1. ベーシック認証

ベーシック認証とは、WEBサイトにアクセスする際に、IDとパスワードの入力を求められる機能のことです。認証にはパスワードを保管したファイルが別途必要となるため、セキュリティを考慮して.htaccess による認証用 パスワード暗号化ツールなどで生成したパスワードを.htpasswdファイルに保存しておく必要があります。
一般公開前のWEBサイトや特定のユーザーのみが閲覧できるように制約をかけるときにベーシック認証を設定します。

具体的には.htaccessファイルに次のように記述します。

.htaccess
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserfile ".htpasswdファイルの設置場所"
AuthGroupfile /dev/null
require valid-user

それぞれの意味を下記で説明します。

  • AuthType Basic
    ベーシック認証を指定
  • AuthName "Please enter your ID and password"
    ID・パスワード入力欄の上に表示する領域名のこと
  • AuthUserfile ".htpasswdファイルの設置場所"
    .htpasswdファイルのパス
  • AuthGroupfile /dev/null
    グループごとにアクセス許可を設定する箇所で、特に設定しない場合は/dev/nullと入力
  • require valid-user
    valid-userを指定すると、認証を通ったすべてのユーザーの認証を許可できる

2. リダイレクト設定

リダイレクト設定とは、特定のURLにアクセスしたときに別のURLに自動で転送する設定のことです。
WEBサイトをリニューアルしたり、ドメインを変更したりした場合に、前のWEBサイトにアクセスがあると新しいWEBサイトへ自動で転送するような仕組みを設定したいときに使用します。

リダイレクトには2種類の設定方法がある
リダイレクトの種類 説明
301リダイレクト 恒久的に別のURLに転送する。WEBサイトのリニューアル時などに使用する。
302リダイレクト 一時的に別のURLに転送する。Webサイトの一時的なメンテナンスやキャンペーンページへの誘導時などに使用する。

リダイレクト元のURLからリダイレクト先のURLへ転送するには.htaccessファイルに次のように記述します。

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (リダイレクト元のURL) $ (リダイレクト先のURL) [R=301,L]
</IfModule>

3. URLの正規化

URLの正規化とは、1つのページに複数のURLが存在するときに検索エンジンが評価するページを1つに指定することです。
特にドメインの前にwwwが付いたり、httpとhttpsのURLのどちらもが存在したりする場合にページが分散し、SEO的にクロール回数が減り上位表示されづらくなってしまします。

先ほどの301リダイレクト設定と書き方は同じですが、次のように設定することで正規化できます。

wwwのないURLをwwwのあるURLに正規化する場合

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (https://example.com) $ (https://www.example.com) [R=301,L]
</IfModule>

httpをhttpsに正規化する場合

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (http://www.example.com) $ (https://www.example.com) [R=301,L]
</IfModule>

4. IP制限

IP制限とは、特定のIPからしかWEBサイトを表示できないように設定することです。
一般公開前のWEBサイトを管理したり、特定のIPからしか閲覧できないようにしてセキュリティを高めたりするときに使用されます。

.htaccessファイルで設定する際には次のように記述できます。

.htaccess
order deny,allow
deny from (IPアドレス)
allow from(IPアドレス)

denyでアクセス拒否、allowで許可するIPアドレスを記述します。全てのIPアドレスを拒否、許可する場合は、allを使用することもできます。
複数のIPアドレスについて記述する場合は、改行して続けて書くことができます。

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

404エラーページはユーザーにページが存在しないことを知らせるためのページです。
Googleにもデフォルトで404ページが用意されていますが、カスタム404ページを作成し.htaccessファイルで案内することでユーザーにより親切なサイトが作成できます。

オリジナルの404ページを表示させるには、.htaccessファイルに下記の1文を記述します。

.htaccess
ErrorDocument 404 /404.html

最後に

多くの機能があり使い勝手のよい.htaccessファイルですが、使い方によってはWEBサイトが表示されなくなることもあります。
十分に理解した上で注意して編集するように心がけてください。編集するときはバックアップも忘れずに!

参考

Discussion