Apache ウェブサーバーで .htaccess を利用するには

カテゴリー:Linux OS, Linux VPS, Linux 専用サーバー
 

本記事ではご利用 Linux サーバー上の Apache ウェブサーバーで .htaccess を有効にする方法を記述しています。

対象OS

・Red Hat Enterprise Linux 5.x 32Bit/64Bit
・Red Hat Enterprise Linux ES 4.x 32Bit/64Bit
・CentOS 5.x 32Bit/64Bit
・CentOS 4.x 32Bit/64Bit

この文書作成に利用した環境

・CentOS 5.5 32Bit

参考記事

Apacheインストール方法
Apache 設定更新内容の文法をチェックするには
Apache 公式サイトチュートリアル: .htaccess ファイル

1..htaccess 有効化にあたって

今文書では、「Apacheインストール方法」 でインストールされた Apache が指定しているデフォルトディレクトリ、 /var/www/html 以下で .htaccess を利用するための方法を記載します。それ以外のディレクトリでウェブサイトを運用されている場合は適時ディレクトリを読み変えてください。
今文書では、.htaccess を利用してウェブディレクトリのデフォルトファイルを変更して機能確認とします。
.htaccess 利用においては、ファイルの記述によってはウェブサイト配信停止、遅延の原因になったり、利用方法によってはセキュリティホールともなりかねませんのでご注意ください。

2.作業の前に

設定ファイルを書き換える前に、現行の設定ファイルのコピーを取ります。

[root@DS00000 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig

設定ファイルで、デフォルトファイルの設定を確認します。インストール直後であれば以下の方法で現行設定が確認できます。

[root@localhost ~]# grep DirectoryIndex /etc/httpd/conf/httpd.conf
# DirectoryIndex: sets the file that Apache will serve if a directory
DirectoryIndex index.html index.html.var

この設定では、ウェブディレクトリである /var/www/html に index.html があれば、http://DomainName/ とファイル指定無しでアクセスした場合 index.html を自動で表示させる事になります。
Apache インストール直後は /var/www/html 以下にはコンテンツが何もありませんので、テスト用に index.html と top.html を作成します。

[root@localhost ~]# echo "INDEX HTML" > /var/www/html/index.html
[root@localhost ~]# echo "TOP HTML" > /var/www/html/top.html

デフォルト設定では、http://IPアドレス/ とブラウザで要求すると先ほど作成した index.html によって、「INDEX HTML」と表示されます。この設定を、.htaccess を使ってindex.html の代わりにtop.htmlを表示するよう変更します。

3.設定ファイル編集

.htaccess を有効にするための項目は /etc/httpd/conf/httpd.conf の300行目付近にあります。

<Directory "/var/www/html" >

#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>

上記の None を、All と書き換え、Apacheを再起動します。
次に、今作業のテストとして、index.html がデフォルトファイルとなっているところを top.html をデフォルトファイルとしてみます。
次に、/var/www/html に .htaccess を作成します。

[root@localhost ~]# echo "DirectoryIndex top.html" > /var/www/html/.htaccess
[root@localhost ~]# ls -a /var/www/html
. .. .htaccess top.html

今回作成した .htaccess は、ファイル名形式から分かるように隠しファイルですので -a オプションを加えて確認してください。
設定が終りましたので、ブラウザで http://IPアドレス/ とすると、index.html の内容では無く、top.html に記述された「TOP HTML」が表示されているはずです。
再度テストのため .htaccess を削除してから http://IPアドレス/ にアクセスします。今回は .htaccess の指定が無いため、Apache デフォルト設定が適用され index.html のコンテンツである、「INDEX HTML」が表示されているはずです。
以上で設定・確認となります。