日々の生活を好き勝手につづったブログ(My blog is written by inoshita.jp)
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機能とrewrite機能を有効にしていないと駄目なのですが、freoのディレクトリに以下の.htaccessファイルを置く(アップロードかな)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ /freo/index.php/$1 [L]
RewriteRuleの記述形式は、RewriteRule (パターン)(変換後)になるが、RewriteRule (相対パスでの指定) (フルパスでの指定) となることに注意
(例)/html/freo/に設置したなら、/html/freo/index.php/$1 [L]と記述
特にパターンの方が相対なので、変換後の記述をフルパスにしてなくてハマる
RewriteCond %{REQUEST_FILENAME} !-f、RewriteCond %{REQUEST_FILENAME} !-dは、それぞれファイル・ディレクトリが存在したら変換しないという記述
[L]は変換の指定はここまでですという意味(無くても動作する)