mod_rewriteについて

概要

mod_rewriteはApacheモジュールの一つで、アクセスURLを正規表現で書き換えることができます。mod_rewriteを利用しない状態だと、freoにアクセスするためのURLは

  • http://www.example.com/index.php/view/5
  • http://www.example.com/index.php/login

このようなURLになります。ですがmod_rewriteを利用すると

  • http://www.example.com/view/5
  • http://www.example.com/login

このようなURLでアクセスできるようになります。URLがスッキリして判りやすくなり、SEO対策にもなります。ただし、mod_rewriteが利用できるサーバーであることが必須条件です。mod_rewrite未対応のサーバーではこの機能は利用できません。

詳細

mod_rewriteに対応させる場合、freo/config.php をエディタで開き、基本設定の「mod_rewriteへの対応」を true に設定します。

さらに、以下のファイルを解凍して作成される .htaccessindex.php と同じディレクトリ内にアップロードします。(既に .htaccess を使用している場合、以下のファイルの内容を追記してください。)

これで、freoにアクセスできるURLが変わります。

mod_rewriteを利用できるサーバーなのに正しく動作しない場合、.htaccess 内にある

RewriteRule (.*) index.php/$1

という部分を以下のように変更してみてください。

RewriteRule (.*)$ index.php?pathinfo=$1&%{QUERY_STRING}

エラーページの設定

mod_rewriteを利用すると、404エラーページ(ファイルが見つからないときに表示させるページ)を設定していても表示されません。mod_rewriteの設定によってPHPプログラムにアクセスを行うためですが、freo側の設定でエラーページを指定することができます。

404エラーページを指定するには、libs/freo/config.php の30行目あたりにある

//404 File Not Found エラーページ(mod_rewrite利用時)
define('FREO_ERROR_FILE', '');

この部分を、一例ですが以下のように変更します。

//404 File Not Found エラーページ(mod_rewrite利用時)
define('FREO_ERROR_FILE', 'errors/404.html');

ファイルのパスは、index.php からのパスを指定します。404.html はあらかじめ作成しておきます。これで、存在しないファイルにアクセスしようとすると 404.html が読み込まれ、その内容が表示されます。

なお、存在しないディレクトリにアクセスしても通常のfreoのページが表示されますが、今のところこれは仕様です。また、Google Chrome では専用の404エラーページが表示されるため、このエラーページは反映されないようです。