ウェブ公開する為の最適化、FuelPHPのURLからpublicを消す方法

FuelPHPはデフォルトではプロジェクト名/public/という階層になります。

そのためローカルで起動すると、

http://localhost/hoge/public/welcome/

とかになるわけです。このpublicが余計なパスですしカッコよくないので消したいですよね。

当然、ウェブ公開するときには消してから公開もしたい。ではこのpublicを削除した状態で表示できるようにします。

成功すると、http://localhost/hoge/welcome/

というURLでページが閲覧できるようなります。

 

■参考イメージ

  • プロジェクト名:hoge
  • hoge/public/welcome/

①hogeフォルダの中に以下の.htaccessを作成して配置します。

1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
  RewriteEngine on
    RewriteRule ^(/)?$ /hoge/public/index.php/$1 [L]
    RewriteCond ${REQUEST_FILENAME} !-f
    RewriteCond ${REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /hoge/public/index.php/$1 [L]
</IfModule>

Windows で .htaccess ファイルを作る

【問題点】
Windows で .htaccess という名前のファイルを作成しようとしても、うまくできないことがあります。

メモ帳の [名前をつけて保存] から .htaccess で保存しても、.htaccess.txt になってしまう。
エクスプローラで名前を変更しようとしても、「ファイル名を入力してください。」のエラーになる。
【解決方法】
次のような方法があります。

メモ帳で保存する際に、ファイル名を “.htaccess” のようにダブルクォーテーション付きのファイル名で保存する。
htaccess.txt というファイル名で作成しておき、MS-DOSプロンプト([スタート]→[プログラム]→[MS-DOSプロンプト])からファイル名変更する。例えば、htaccess.txt が C:\HomePage にあるとすれば、以下のようにする。
C:\<cd \HomePage
C:\HomePage>ren htaccess.txt .htaccess
Windows で作成することをあきらめて、FTP ソフトでサーバーに htaccess.txt を転送した後、FTP ソフトの機能でサーバー側の htaccess.txt ファイルを .htaccess にファイル名変更する。

(引用:http://www.tohoho-web.com/ex/draft/makehtaccess.htm

②config/config.php を編集

コメントアウトされているはずなので、コメントを外して’/hoge/’を指定する。

1
'base_url' => '/hoge/',

③cssが読めなくなるので core/config/assets.php を編集

.’public/’を足すようにします。

1
2
//'url' => Config::get('base_url')
'url' => Config::get('base_url').'public/',

これでpublicなしのURLで表示ができるようになります。