2013-09-17

mod_rewriteを使って、リクエスト時の拡張子を消す on Apache2.2 -Ubuntu12.04

mod_rewriteを使ってリクエストを制御する練習。 とりあえずよく使いそうな「ファイルの拡張子を消す」処理を実現してみる。 今回対象とするのは「html」拡張子。

必要なモジュールの確認をする

(1) rewrite_module

$sudo apache2ctl -M | grep rewrite

→ 見つからない

インストールをする前に、組み込まれていないだけでインストールされていないかを確認する

$ ll /usr/lib/apache2/modules/ | grep rewrite
-rw-r--r-- 1 root root  63488 Jul 12 22:38 mod_rewrite.so

→ 両方見つかった

rewriteモジュールの有効化

$ sudo a2enmod rewrite
Enabling module dav.
To activate the new configuration, you need to run:
  service apache2 restart

apache再起動

$ sudo service apache2 restart
* Restarting web server apache2 ...

apache2.confの設定

$sudo -H vim /etc/apache2/apache2.conf

※ 以下の内容を設定を反映させたいDirectoryディレクティブ配下に記述

RewriteEngine On
RewriteRule ^/(.*)$/$1.html [L]

文法チェック

$sudo apachectl -t
Syntax OK

ブラウザで確認してみる

あらかじめ作っておいたindex.htmlとtest.htmlで実験

http://192.168.56.101/index.html → OK
http://192.168.56.101/test.html → OK
http://192.168.56.101/index → OK
http://192.168.56.101/test → OK

→ 拡張子無しでもアクセスできた!

mod_rewrite、かなり色々なことができそうなので徐々に幅を広げていきたい。

※ 参考