Apache2.0のrewriteモジュール
当初、本サイトはHTMLファイル(*.html)で構成されていましたが、PHPのことを知るにつれ、すべてのページをPHPファイル(*.php)で作ることにしました。その場合、ファイルの中身がPHP化されてなくても問題ありません。しかし、検索エンジン等で既に上位にきている*.htmlのページが次のようなるのは嬉しくないですよね。

これまで通り、ブラウザでhttp://www.arakin.dyndns.org/****.htmlとされても、問題なくアクセスできるようにする方法を紹介します。***.htmlとアクセスされても、***.phpと置き換えるために、Apacheのrewrite機能を使います。まず、/etc/apache2/mods-available/rewrite.loadがあることを確認します。Apache2.0をインストールしていれば、きっとあると思います。rewriteはデフォルトではオフになっているので、次のコマンドで有効にします。
$ a2enmod rewrite
このコマンドにより、/etc/apache2/mods-enableにrewrite.loadというシンボリックリンクが作成されます。そして、***.htmlを***.phpに置き換えるルールを記述するために、Apache2.0のサイト設定用ファイル/etc/apache2/sites-available/defaultを編集します。
# DocumentRoot /var/www/
DocumentRoot /mnt/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# <Directory /var/www/>
# Options Indexes FollowSymLinks MultiViews
# AllowOverride None
<Directory /mnt/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
RewriteEngine On <-- ①
RewriteBase / <-- ②
RewriteRule ^(.*)\.html$ $1\.php [L] <-- ③
# RewriteRule index\.html index\.php [L] <-- ④
# This directive allows us to have apache2's ....
# in /apache2-default/, but still have / go to ....
# RedirectMatch ^/$ /apache2-default/
①でrewrite機能を有効にします。②でトップディレクリからのベースとなるURLを記述します。ここでは、トップディレクリ以下すべて***.phpに変更したいので、こうしました。③が変換規則で、正規表現を使用しています。rewriteの詳しい説明は、下記のサイトで紹介されています。
もしあるページだけ置き換えたいならば、④のようにします。④は、index.htmlをindex.phpに置き換えるための規則です。これで終わりかな?と思っていましたが、Subversionを使用しているならば、次のような設定も必要であることがわかりました。
<Location /svn> : : 途中略 : : # Set this to the path to your repository # SVNPath /var/lib/svn SVNParentPath /mnt/svn # SVNPath /mnt/svn Options Indexes Order allow,deny allow from all RewriteEngine Off <- 追加① : : 途中略 : : </Location>
理由はよく分かりませんが、Subverionの設定ファイル/etc/apache2/mods-availableでは、rewriteを無効にしないと、コミットが失敗するみたいです。この後、次のようにApache2を再起動します。
# /etc/init.d/apache2 restart
私の場合、rewrite機能を/etc/apache2/sites-available/defaultで行いましたが、.htaccessでも可能なようです。但し、試したことはありません。今回は、Apacheのrewrite機能で、ファイル名の置き換えを行いましたが、もっといい方法があるかもしれません。
最新の7件
OpenGL
電子工作
玄箱HG
- ClamAVのアップデート
- Smartyも入れてみる
- etchでPHP4->PHP5
- etchでのSamba設定
- etchでのメール設定
- 玄箱HGのetch化
- Webdruidでログ解析
- PEARも入れてみる
- 玄箱WEBのUTF-8化
- phpMyAdminでMySQL
- postmasterの変更
- ウィルスメール対策
- SPAMメール対策
- メールサーバ(IMAP)
- メールサーバ(Postfix)
- 猫にXOOPS
- PHPも入れてみる
- MySQLを入れてみる
- Subversion導入
- WebDav導入
- Apacheのrewrite機能
- Apacheディレクトリ設定
- Apache1.3->2.0
- ddclientの設定
- 静かな玄箱
- ユーザ追加