レンタルサーバーにおける「mod_rewrite」と「.htaccess」の関係性

レンタルサーバー各社の「よくある質問」などを見ていると、「mod_rewriteは使えますか?」といった質問をよく見かけます。

サーバー初心者であればそこまで気にする必要のない項目ですが、いったいなんなのか気になる方も多いと思います。そこでここでは「mod_rewrite」および、その設定ファイルである「.htaccess」について解説します。

mod_rewriteとは

現在、レンタルサーバー業界ではほとんどのOSにLinuxまたはUnix系列のOSが採用されています(一部、Windowsサーバーを採用しているサービスもあります)。
このLinux/Unix系列のOSで動くウェブサーバーとしてもっとも代表的なものが、Apache(アパッチ)と呼ばれるものです。

そして「mod_rewrite」とは、このApacheに機能を追加するための部品のようなものです。「mod」の部分は「module(モジュール)」の略で、「mod_rewrite」以外にも、CGIの実行に必要となる「mod_cgi」、サーバの状況を表示するための「mod_status」など、様々なモジュールがあります。

では「mod_rewrite」はどんな役割をしているかというと、ウェブサイトのURLを「rewrite(書き換える)」ためのモジュールです。

もっとも一般的な使われ方としては、「http://example.com/old-contents.html」というURLに対してアクセスがあった場合に「http://example.com/new-contents.html」に飛ばす、といったリダイレクト処理に使われます。

また近年利用が増えているWordPressなどは、パーマリンク構造という設定でURLの表示を方法を変更できますが、これも裏側では「mod_rewrite」を使った処理を行っています。

つまり「mod_rewriteが使えますか?」という質問は、「URLのリダイレクトや書き換えは可能ですか?」という質問とほぼ同じ意味になります。
※mod_rewriteの利用方法は他にもありますが、共用サーバーの場合は、ほぼ上記の意味で捉えて問題ないと思います。

.htaccessとは

前述の「mod_rewrite」は、実際の設定は「httpd.conf」と呼ばれるファイルにテキスト形式で記述します。

しかし複数のユーザーがいる共用サーバーでは、「httpd.conf」を直接ユーザーに設定させるのは大変危険です。設定を誤ると、サーバー内の全ユーザーのウェブサイトがアクセス不能になる、といった事態に陥る可能性すらあります。

そこで使うのが「.htaccess(ドットエイチティーアクセス)」と呼ばれるファイルです。これもテキスト形式でリダイレクトやURL書き換えの設定を記述するためのものですが、httpd.confとは大きな違いがあります。

というのも.htaccessは、それを置いたディレクトリ、およびその下層(サブディレクトリ)以下にのみ設定が適用されます。そのため共用サーバーであれば、各ユーザーのディレクトリに置いた.htaccessを編集してもらうことで、他ユーザーには影響を与えずにすみます。

レンタルサーバー側が「mod_rewriteは使えます」と答えている場合でも、(VPSなどのroot権限を与えられている場合を除いて)ユーザーは実際には「.htaccess」を用いて設定を行うのが一般的です。