現在、最も多く利用されているサーバーソフトウェアが Apache(アパッチ)です。Apache は UNIX系OS や Windows などのマルチプラットフォームで動作し、フリーソフトウェアとして無償で公開され、誰でも修正・再配布することができるので、世界中のボランティアのプログラマたちの手によって開発されています。その特徴は、サーバーの構成を必要な機能のモジュール単位で行うため、機能の追加・削除が容易で、必要のない機能は削除できるので、それぞれの用途にあった構成が組めます。これによって Apache は今や世界で最も多く使われているサーバーソフトウェアとなりました。
サーバーソフトウェアに Apache を利用しているウェブサーバーの動作設定は、httpd.conf というファイルに記述しますが、このファイルはウェブサーバーの管理者しか編集することができません。主設定ファイルである httpd.conf にアクセスできない場合のために、Apache では .htaccess(ドットエイチティーアクセス)という分散設定ファイルが用意されており、.htaccess を利用することで、ウェブサーバーの一部のスペースをレンタルしている我々サイト管理者でもウェブサーバーの動作をディレクトリ単位で設定することができます。サーバーの動作設定とは具体的には HTTP を用いて、リダイレクトを行ったり、自作のオリジナルエラーメッセージを表示したり、特定のリソースへのアクセスを制限をかけることなどができます。ただし、.htaccess でどのような設定が行えるかはウェブサーバーの管理者が編集する httpd.conf で制限されているため、サーバーによっては許可されていない設定もあります。
この部分の内容はウェブサーバーの管理者向けです。個々のサイト管理者の方には関係がないので飛ばしてください。まず、分散設定ファイルの .htaccess という名前は AccessFileNameディレクティブでどんな名前にでも指定できます。例えば、分散設定ファイルを .config という名前にしたい場合は、主設定ファイル(httpd.conf)に次の設定を入れることで可能です。
AccessFileName .config
さらに、どのディレクティブが分散設定ファイル(.htaccess)に書けるかを設定するには、主設定ファイル(httpd.conf)に AllowOverrideディレクティブで制御します。たとえば、AllowOverride All で分散設定ファイル(.htaccess)でも全てのディレクティブが利用でき、反対に AllowOverride None で分散設定ファイル(.htaccess)は完全に無視されます。ALL, None の他に directive-type としてキーワードを指定することができ、AllowOverride AuthConfig Limit と記述した場合は認証に関するディレクティブとホストへのアクセス制御を行うためのディレクティブの使用を許可することを意味します。詳しくは Apache の AllowOverrideディレクティブの解説を参照ください。
ウェブサーバーの動作設定の反映順位は、まず主設定ファイルである httpd.conf に書かれている設定を有効にし、次に分散設定ファイルである .htaccess がある場合、.htaccess の設定が上書きされて反映されることになります。なお、.htaccess を複数記述している場合、その動作は上位から下位ディレクトリに向けて上書きして反映されます。つまり、制限をかけたいディレクトリに対して、動作設定を記述した .htaccess のファイルをアップロードする必要があります。ただし、分散設定ファイルである .htaccess でも一番上位ディレクトリにアップロードした場合は、それ以降のサブディレクトリにも制限がかかります。例えば、最上位ディレクトリにある .htaccess に画像関係のファイルへのアクセスを制限する設定が記述されていて、下位ディレクトリにある .htaccess でそのアクセス制限を解除する設定がない場合、そのウェブスペースにアップロードされているすべての画像ファイルに対してアクセス制限がかかることになります。こういった意味で非常に注意して扱わなければならない重要なファイルです。
.htaccess を扱うにあたっての基本知識(構文や注意点)を説明します。
Apache の設定ファイルは1行に1つのディレクティブ(動作設定の命令文)からなります。バックスラッシュ(\)はディレクティブが次の行に継続していることを示すために行の最後の文字として使われているかもしれません。行の最後とバックスラッシュの間に他の文字や空白があってはいけません。設定ファイルのディレクティブは半角アルファベットの大文字・小文字を区別しませんが、引数にはしばしば区別するものがあります。ハッシュ(#)で始まる行はコメントと見なされて無視されます。設定ディレクティブの後の行ではコメントが含まれていてはいけません。ディレクティブの前の空行と空白は無視されますので、わかりやすくするためにディレクティブをインデントしても構いません。
.htaccess という名前はドット(.)からはじまっているように通常のファイル名にあたる部分がなく拡張子だけで構成されています。このためテキストエディタなどで「名前をつけて保存」を選択した際に、確かに .htaccess として保存したはずなのに、勝手に .htaccess.txt のようにリネームされることがあります。これは何度修正しても、テキストエディタ側が拡張子がつけられていないものに対しては、".txt" などの拡張子を自動的につける設定になっているため .htaccess というファイルで保存することはできません。そのため、このような場合は、ローカルでは .htaccess.txt のままで保存しておき、FTP でウェブサーバーに .htaccess.txt をアップロードした際にサーバー側で .htaccess へとリネームするのが確実な方法です。
.htaccess を使ってどのようなことができるのか、使用頻度の高い設定例をいくつか取り上げてみました。
http://w3g.jp/others/htaccess/outline実績:大阪学院 入試サイト New! / 三田市民病院 / 神戸女学院大学 入試サイト / 釣りサンデー