Apache2.0のrewriteモジュール利用

サーバ(運用している方)

apache2ではrewriteはデフォルトでオフになっているので次のコマンドで有効にする

# a2enmod rewrite

/etc/apache2/sites-available/defaultを編集

<Directory /mnt/www>
#AllowOverride None
AllowOverride All ← Allになっていないと.htaccessでは駄目 → AllowOverride FileInfo Options でOKか
・・・
</Directory>
<Directory /mnt/www/freo>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)$ /freo/index.php/$1 [L]
</Directory>

apache2を再起動

# service apache2 restart
.htaccessに記述する場合

サーバを運用するプロバイダーが.htaccess機能とrewrite機能を有効にしていないと駄目なのですが、freoのディレクトリに以下の.htaccessファイルを置く(アップロードかな)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ /freo/index.php/$1 [L]
RewriteRuleの注意点

RewriteRuleの記述形式は、RewriteRule (パターン)(変換後)になるが、RewriteRule (相対パスでの指定) (フルパスでの指定) となることに注意

(例)/html/freo/に設置したなら、/html/freo/index.php/$1 [L]と記述

特にパターンの方が相対なので、変換後の記述をフルパスにしてなくてハマる

RewriteCond %{REQUEST_FILENAME} !-f、RewriteCond %{REQUEST_FILENAME} !-dは、それぞれファイル・ディレクトリが存在したら変換しないという記述

[L]は変換の指定はここまでですという意味(無くても動作する)