mod_rewriteについて
概要
mod_rewriteはApacheモジュールの一つで、アクセスURLを正規表現で書き換えることができます。mod_rewriteを利用しない状態だと、freoにアクセスするためのURLは
http://www.example.com/index.php/view/5http://www.example.com/index.php/login
このようなURLになります。ですがmod_rewriteを利用すると
http://www.example.com/view/5http://www.example.com/login
このようなURLでアクセスできるようになります。URLがスッキリして判りやすくなり、SEO対策にもなります。ただし、mod_rewriteが利用できるサーバーであることが必須条件です。mod_rewrite未対応のサーバーではこの機能は利用できません。
詳細
mod_rewriteに対応させる場合、freo/config.php をエディタで開き、基本設定の「mod_rewriteへの対応」を true に設定します。
さらに、以下のファイルを解凍して作成される .htaccess を index.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エラーページが表示されるため、このエラーページは反映されないようです。