ApacheでWebサイトを立ち上げたあと、「とりあえず表示できたから大丈夫」として色々な設定を後回しにしてしまうことは珍しくありません。 しかしその状態は、見た目以上に危ういものです。 ディレクトリの中身がそのまま公開されてしまったり、 URLが統一されていないことで検索エンジンから正しく評価されなかったりと、設定漏れが原因のトラブルは意外と起こりがちです。

この記事では、Apache初心者が「まず最初に」設定しておくべき .htaccess の項目を、必要最低限に絞って整理します。
完璧を目指すのではなく、やらかさない状態を作ることが目的です。

まず前提:本来は httpd.conf で設定するのが基本

Apacheには、大きく分けて2種類の設定方法があります。

  • サーバー全体に一括で適用する設定(httpd.conf
  • 特定のディレクトリごとに適用する設定(.htaccess

httpd.conf は、Apacheそのものの動作を決める「本体設定ファイル」です。 ここに書かれた内容は、Webサーバー起動時に一度だけ読み込まれ、すべてのリクエストに共通して適用されます。

一方で .htaccess は、アクセスが来るたびにApacheが「このディレクトリに設定ファイルはあるか?」 を毎回確認しながら処理を行います。 そのため、

  • 設定が増えるほど、リクエストごとに確認処理が発生する
  • ディレクトリごとに設定が分散し、全体像が見えにくくなる

といった理由から、パフォーマンスや管理性の面では httpd.conf の方が優れているとされています。

つまり技術的には、 「できるなら httpd.conf にまとめて書く」のが正解です。

それでも .htaccess を使う場面は多い

ただし現実的には、httpd.conf を自由に編集できない環境も多く存在します。

例えば、

  • 共有レンタルサーバーを使っている
  • WordPressなどのCMSを前提としたホスティング環境
  • VPSでも、運用ルール上サーバー設定を触れない

といったケースです。 こうした環境では、ユーザーが変更できる設定範囲が .htaccess に限定されていることがほとんどです。

そのため実務では、
「理想は httpd.conf、現実は .htaccess」
という使い分けがよく行われています。

この記事の立ち位置について

この記事では、Apacheの内部構造を深く理解することは目的にしていません。 あくまで、「初心者が、最低限の事故を防ぐために今すぐできる設定」 にフォーカスしています。

そのため、httpd.conf が触れない前提で、.htaccess を使った対策に内容を絞って解説します。 まずは .htaccess で安全な状態を作る。 そのうえで、余裕が出てきたら httpd.conf という選択肢がある、 くらいの理解で十分です。

.htaccess とは何か

.htaccess は、Apacheで利用できるディレクトリ単位の設定ファイルです。 レンタルサーバーやWordPress環境で、最もよく使われる設定方法でもあります。 URLの書き換えやアクセス制御、セキュリティ関連の設定などを、サーバー全体の設定を触らずに行える点が特徴です。

WordPressなどのCMSを使っていると、意識せずとも目にすることがありますが、 便利さの裏側には「設定を誤ると公開範囲が広がってしまう」というリスクもあります。 最低限の役割だけは理解しておくべき存在だと言えるでしょう。

最低限これだけは設定しておきたい3つのポイント

ここからは、Apache初心者でも 「とりあえずこれだけやっておけば大きな事故は防げる」 という設定を3つ紹介します。 すべて .htaccess に書ける内容なので、難しい前提知識は必要ありません。

① ディレクトリのファイル一覧表示を無効化する

まず最初に設定しておきたいのが、
「フォルダの中身を、そのまま見せないようにする設定」です。

Webサイトでは、URLの末尾にフォルダ名を指定してアクセスできる場合があります。
例えば、次のようなURLです。

このとき、もしそのフォルダの中に
トップページ用のファイル(index.htmlindex.php など)が置かれていないと、
Apacheの設定によっては フォルダの中身が一覧表示されてしまうことがあります。

つまり、

  • 画像ファイル
  • PDFファイル
  • CSVファイル

などが、ファイル一覧としてそのまま表示される状態です。

「画像しか置いていないから大丈夫」と思っていても、
作業中に一時的に置いたファイルや、削除し忘れたデータが
意図せず誰でも見られる状態になってしまう可能性があります。

これを防ぐために使うのが、次の設定です。

Options -Indexes

この設定を入れると、フォルダにトップページ用のファイルが無い場合でも、ファイル一覧は表示されなくなります。

設定する場所は、publicassetsimg などの 公開フォルダの一番上 が安全です。

そこに設定しておけば、 その下にあるフォルダすべてにまとめて効果が及ぶため、 「うっかり公開してしまう」事故を防ぎやすくなります。

② URLを正規化する(wwwあり/なしを統一する)

次に重要なのが、URLの正規化です。

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

www.example.comexample.com は、 人間にとっては同じWebサイトに見えますが、 検索エンジンからは別のURLとして扱われます。

この状態を放置していると、 同じ内容のページが複数存在することになり、 検索エンジンからの評価が分散してしまいます。

そのため、「wwwあり」か「wwwなし」のどちらか一方を正と決め、 必ずURLを統一する必要があります。

最近は「wwwなし」を選ぶケースが多いですが、 技術的にどちらが正しいという話ではありません。

重要なのは、どちらか一方に必ず揃えることです。

③ HTTPアクセスをHTTPSに統一する

最後は、HTTPからHTTPSへの統一です。

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

HTTPのままWebサイトを公開していると、通信内容が暗号化されず、安全性の面で問題があります。 また、ブラウザ上で「保護されていません」といった警告が表示されたり、検索順位に悪影響が出たりする可能性もあります。

SSL証明書を導入しただけでは、HTTPアクセスが自動的にHTTPSへ切り替わるわけではありません。

そのため、HTTPでアクセスされた場合でも、 必ずHTTPSに転送されるよう設定しておく必要があります。

SSL証明書を導入したら、 この設定も忘れずに行いましょう。

迷ったら、まずはこれをやればOK

ここまで読んで、「結局 .htaccess はどこに置けばいいの?」と感じた方もいるかもしれません。 結論から言うと、トップページ(index.html や index.php)が置かれているフォルダと同じ場所 に、これから紹介する内容を書いた .htaccess を置いておけばOKです。 そこに置くことで、Webサイト全体に今回紹介した設定がまとめて適用されます。

細かいフォルダ構成が分からなくても、 「トップページと同じ場所に置く」と覚えておけば、 初心者のうちは大きく間違えることはありません。

# ----------------------------------------
# ディレクトリのファイル一覧表示を無効化
# ----------------------------------------
Options -Indexes

# ----------------------------------------
# URLの正規化(wwwあり → wwwなし)
# ----------------------------------------
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

# ----------------------------------------
# HTTP → HTTPS にリダイレクト
# ----------------------------------------
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

※ 上記の example.com の部分は、必ず自分のドメイン名に書き換えてください。
※ すでにSSL証明書(HTTPS)が有効になっている状態で使用してください。

まとめ:完璧を目指さず、まずは事故を防ぐ

.htaccess には、より細かく高度な設定も数多く存在します。 ただし初心者のうちは、すべてを理解しようとする必要はありません。

  1. ファイル一覧を表示させないこと
  2. URLを一つに統一すること
  3. 通信をHTTPSに寄せること。

この3点を押さえるだけでも、ありがちな事故の多くは防げます。

Webサイトを公開した直後に、一度立ち止まって設定を見直してみてください。 その小さな手間が、あとから効いてきます。